diff --git a/ptero_eggs/hytale/README.md b/ptero_eggs/hytale/README.md new file mode 100644 index 0000000..a837be4 --- /dev/null +++ b/ptero_eggs/hytale/README.md @@ -0,0 +1,13 @@ +# Hytale + +Set out on an adventure built for both creation and play. Hytale blends the freedom of a sandbox with the momentum of an RPG: explore a procedurally generated world full of dungeons, secrets, and a variety of creatures, then shape it block by block. + +## Server Ports + +Hytale uses a single **UDP** port for gameplay, operating over the **QUIC** transport protocol. +An optional **query port** is available for server discovery using the **Source Query Protocol**. + +| Port Type | Default | +| ---------------- | ------- | +| Game | 5520 | +| Query (Optional) | 5521 | diff --git a/ptero_eggs/hytale/egg-hytale.json b/ptero_eggs/hytale/egg-hytale.json new file mode 100644 index 0000000..4e755d3 --- /dev/null +++ b/ptero_eggs/hytale/egg-hytale.json @@ -0,0 +1,114 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2026-01-13T05:17:28+00:00", + "name": "Hytale", + "author": "hello@pterodactyl.io", + "description": "Set out on an adventure built for both creation and play. Hytale blends the freedom of a sandbox with the momentum of an RPG: explore a procedurally generated world full of dungeons, secrets, and a variety of creatures, then shape it block by block.", + "features": [ + "java_version" + ], + "docker_images": { + "ghcr.io/pterodactyl/games:hytale": "ghcr.io/pterodactyl/games:hytale" + }, + "file_denylist": [], + "startup": "java $( ((USE_AOT_CACHE)) && printf %s \"-XX:AOTCache=Server\/HytaleServer.aot\" ) -Xms128M $( ((SERVER_MEMORY)) && printf %s \"-Xmx${SERVER_MEMORY}M\" ) -jar Server\/HytaleServer.jar $( ((HYTALE_ALLOW_OP)) && printf %s \"--allow-op\" ) $( ((HYTALE_ACCEPT_EARLY_PLUGINS)) && printf %s \"--accept-early-plugins\" ) $( ((DISABLE_SENTRY)) && printf %s \"--disable-sentry\" ) --auth-mode ${HYTALE_AUTH_MODE} --assets Assets.zip --bind 0.0.0.0:${SERVER_PORT}", + "config": { + "files": "{}", + "startup": "{\n \"done\": \"Hytale Server Booted\"\n}", + "logs": "{}", + "stop": "/stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/ash\nset -e\n\nmkdir -p \/mnt\/server\ncd \/mnt\/server\n\necho -e \"Downloading Hytale Downloader CLI...\"\n\nDOWNLOAD_URL=\"https:\/\/downloader.hytale.com\/hytale-downloader.zip\"\n\nrm -f hytale-downloader.zip\ncurl -o hytale-downloader.zip $DOWNLOAD_URL\nunzip -o hytale-downloader.zip -d hytale-downloader\nmv hytale-downloader\/hytale-downloader-linux-amd64 hytale-downloader\/hytale-downloader-linux\nchmod 555 hytale-downloader\/hytale-downloader-linux\n\necho -e \"Verifying Hytale Downloader installation...\"\n\necho -e \"Hytale Downloader version: `.\/hytale-downloader\/hytale-downloader-linux -version`\"\n\necho -e \"Hytale Downloader installed successfully.\"", + "container": "ghcr.io/pterodactyl/installers:alpine", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Accept Early Plugins", + "description": "Hytale warns that loading early plugins is unsupported and may cause stability issues.", + "env_variable": "HYTALE_ACCEPT_EARLY_PLUGINS", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Auth Mode", + "description": "Authentication mode.", + "env_variable": "HYTALE_AUTH_MODE", + "default_value": "authenticated", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:authenticated,offline", + "field_type": "text" + }, + { + "name": "Patchline", + "description": "The branch of Hytale to install.", + "env_variable": "HYTALE_PATCHLINE", + "default_value": "release", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:release,pre-release", + "field_type": "text" + }, + { + "name": "Disable Sentry", + "description": "Hytale uses Sentry to track crashes. Disable Sentry during active plugin development.", + "env_variable": "DISABLE_SENTRY", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Use Ahead-of-Time Cache", + "description": "Hytale provides a pre-trained AOT Java cache which can significantly improve boot times.", + "env_variable": "USE_AOT_CACHE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Allow operators", + "description": "Allow operators", + "env_variable": "HYTALE_ALLOW_OP", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Install Source Query plugin", + "description": "Installs the Soruce Query plugin, so that your server responds to Source Query A2S requests (player count, server name, etc.)", + "env_variable": "INSTALL_SOURCEQUERY_PLUGIN", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Source Query Port", + "description": "The port that the Source Query plugin will use to respond to A2S requests. This should be different from the main server port. Defaults to the game port + 1.", + "env_variable": "QUERY_PORT", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|integer|between:1,65535", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/ptero_eggs/minecraft/bedrock/LeviLamina/README.md b/ptero_eggs/minecraft/bedrock/LeviLamina/README.md new file mode 100644 index 0000000..fecf558 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/LeviLamina/README.md @@ -0,0 +1,26 @@ +# LeviLamina Bedrock Dedicated Server + +[LeviLamina](https://github.com/LiteLDev/LeviLamina) - A lightweight, modular and versatile mod loader for Minecraft Bedrock Edition, formerly known as LiteLoaderBDS + +# Mod installation +During install the egg will look for a file called `lip-install.txt` and use [lip](https://github.com/futrime/lip) to attempt to install all specified packages. +The format of `lip-install.txt` is one package per line in the usual format lip expects. +Create `lip-install.txt`, add your packages to it, then click the reinstall button. +## Example +Install LeviAntiCheat version 0.3.7 +`github.com/LiteLDev/LeviAntiCheat@0.3.7` + +Install LeviAntiCheat latest version +`github.com/LiteLDev/LeviAntiCheat` + + +### Server Ports + +LeviLamina Bedrock Dedicated Server requires a single port (default 19132) + +| Port | default | +|---------|----------| +| Game | 19132 | + +### Known Issues +General Issues can check here -> [LeviLamina Issues](https://github.com/LiteLDev/LeviLamina/issues) diff --git a/ptero_eggs/minecraft/bedrock/LeviLamina/egg-levi-lamina.json b/ptero_eggs/minecraft/bedrock/LeviLamina/egg-levi-lamina.json new file mode 100644 index 0000000..4990674 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/LeviLamina/egg-levi-lamina.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2026-02-01T03:39:39+00:00", + "name": "LeviLamina", + "author": "eggs@purpleflaghosting.com", + "description": "LeviLamina is an unofficial mod loader designed to offer indispensable API support for Minecraft Bedrock Edition. It boasts a comprehensive API, an array of utility interfaces, a robust event system, and comprehensive support for basic interfaces. LeviLamina provides an expansive API, a powerful event system, and a wealth of encapsulated development infrastructure interfaces, forming a solid foundation for augmenting the Minecraft Bedrock Edition with additional gameplay features and functionalities. By leveraging mods, the process of extending Bedrock functionality becomes effortless, with a user-friendly development process and an adaptable approach.", + "features": [], + "docker_images": { + "ghcr.io\/ptero-eggs\/yolks:wine_latest": "ghcr.io\/ptero-eggs\/yolks:wine_latest" + }, + "file_denylist": [], + "startup": "cat | wine 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-portv6\": \"{{server.build.default.port}}\",\r\n \"server-name\": \"{{server.build.env.SERVERNAME}}\",\r\n \"gamemode\": \"{{server.build.env.GAMEMODE}}\",\r\n \"difficulty\": \"{{server.build.env.DIFFICULTY}}\",\r\n \"max-players\": \"{{server.build.env.MAXPLAYERS}}\",\r\n \"level-name\": \"{{server.build.env.WORLDNAME}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"IPv4 supported\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "# Install required packages\r\napt update\r\napt install -y lsb-release xvfb\r\n\r\n# Install wine\r\nwget -O \/etc\/apt\/keyrings\/winehq-archive.key https:\/\/dl.winehq.org\/wine-builds\/winehq.key\r\nwget -NP \/etc\/apt\/sources.list.d\/ https:\/\/dl.winehq.org\/wine-builds\/debian\/dists\/$(lsb_release -sc 2>\/dev\/null)\/winehq-$(lsb_release -sc 2>\/dev\/null).sources\r\napt update\r\napt install --no-install-recommends winehq-stable cabextract -y\r\n\r\nexport WINEPREFIX=\/root\/.wine\r\nmkdir -p $WINEPREFIX\r\n\r\n\r\n# Setup display\r\nexport DISPLAY=:0\r\nXvfb :0 -screen 0 1024x768x16 &\r\n\r\n\r\n\r\n\r\n# Install Winetricks\r\necho \"Installing winetricks\"\r\nwget -q -O \/usr\/sbin\/winetricks https:\/\/raw.githubusercontent.com\/Winetricks\/winetricks\/master\/src\/winetricks && chmod +x \/usr\/sbin\/winetricks\r\n\r\necho \"Installing mono\"\r\nwget -q -O $WINEPREFIX\/mono.msi https:\/\/dl.winehq.org\/wine\/wine-mono\/9.1.0\/wine-mono-9.1.0-x86.msi\r\nWINEDLLOVERRIDES=\"mscoree,mshtml=\" wine msiexec \/i $WINEPREFIX\/mono.msi \/qn \/quiet \/norestart \/log $WINEPREFIX\/mono_install.log\r\n\r\n# Install dotnet\r\necho \"Installing dotnet\"\r\nwinetricks -q dotnet9 \r\n\r\n\r\n# Setup tty width so wine console output doesn't prematurely wrap\r\nstty columns 250\r\n\r\n\r\ncd \/mnt\/server || { echo \"Failed to change directory\"; exit 1; }\r\n\r\n# Install lip\r\nLIP_URL=\"https:\/\/github.com\/futrime\/lip\/releases\/latest\/download\/lip-cli-win-x64.zip\"\r\nwget $LIP_URL -O lip.zip\r\nunzip -o lip.zip lip.exe\r\nrm lip.zip\r\n\r\n\r\nif [ -n \"$VERSION\" ] && [ \"$VERSION\" != \"latest\" ]; then\r\n wine lip.exe install github.com\/LiteLDev\/LeviLamina@\"$VERSION\"\r\nelse\r\n wine lip.exe install github.com\/LiteLDev\/LeviLamina\r\nfi\r\n\r\n\r\necho \"Server Installed\"\r\n\r\nif [ -f \"lip-install.txt\" ]; then\r\n for package in $(cat \"lip-install.txt\" ); do\r\n echo \"Installing ${package} from lip-install.txt\"\r\n wine lip.exe install \"${package}\"\r\n done\r\n echo \"Packages installed\"\r\nfi", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Wine Debug", + "description": "", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Version", + "description": "Version of LeviLamina to install in x.y.z format. Blank or \"latest\" will install the latest release.", + "env_variable": "VERSION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|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" + }, + { + "name": "Winetricks", + "description": "", + "env_variable": "WINETRICKS_RUN", + "default_value": "vcrun2022", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} diff --git a/ptero_eggs/minecraft/bedrock/LiteLoader-bedrock/README.md b/ptero_eggs/minecraft/bedrock/LiteLoader-bedrock/README.md new file mode 100644 index 0000000..ac0bd2d --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/LiteLoader-bedrock/README.md @@ -0,0 +1,16 @@ +# LiteLoader Bedrock Dedicated Server + +[LiteLoaderBDS](https://github.com/LiteLDev/LiteLoaderBDS) - Epoch-making & Cross-language Bedrock Dedicated Servers Plugin Loader + +[LiteLoaderBDS](https://github.com/LiteLDev/LiteLoaderBDS) 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. + +### Server Ports + +LiteLoader Bedrock Dedicated Server requires a single port (default 19132) + +| Port | default | +|---------|----------| +| Game | 19132 | + +### Known Issues +General Issues can check here -> [LiteLoaderBDS Issues](https://github.com/LiteLDev/LiteLoaderBDS/issues) diff --git a/ptero_eggs/minecraft/bedrock/LiteLoader-bedrock/egg-LiteLoader-bedrock.json b/ptero_eggs/minecraft/bedrock/LiteLoader-bedrock/egg-LiteLoader-bedrock.json new file mode 100644 index 0000000..1d4695c --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/LiteLoader-bedrock/egg-LiteLoader-bedrock.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-05-17T20:11:37+02:00", + "name": "Liteloader Bedrock Dedicated Server", + "author": "frizth_tatierra@informatics.edu.ph", + "description": "LiteLoaderBDS - Epoch-making & Cross-language Bedrock Dedicated Servers Plugin Loader\r\n\r\nLiteLoaderBDS is an unofficial plugin loader that provides basic API support for Bedrock Dedicated Server, with a massive API, lots of packed utility interfaces, a rich event system and powerful basic interface support.", + "features": null, + "docker_images": { + "ghcr.io\/ptero-eggs\/yolks:wine_latest": "ghcr.io\/ptero-eggs\/yolks:wine_latest" + }, + "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}", + "startup": "{\r\n \"done\": \"IPv4 supported\"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Liteloader First-time Install Script\r\n\r\napk update\r\napk add gzip jq curl wine\r\ncd \/mnt\/server\r\n\r\nfor file in *; do\r\n if [ \"$file\" != \"allowlist.json\" ] && [ \"$file\" != \"permissions.json\" ] && [ \"$file\" != \"server.properties\" ] && [ \"$file\" != \"plugins\" ] && [ \"$file\" != \"world\" ]; then\r\n if [ -d \"$file\" ]; then\r\n rm -rf \"$file\" # Remove directories recursively\r\n else\r\n rm \"$file\" # Remove files\r\n fi\r\n fi\r\ndone\r\n\r\n# Download Minecraft BDS\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BDS_VERSION}\" ] || [ \"${BDS_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-win\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BDS_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-win\/bedrock-server-$BDS_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\nrm versions.html.gz\r\n\r\n\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/LiteLDev\/LiteLoaderBDS\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/LiteLDev\/LiteLoaderBDS\/releases\")\r\n\r\nif [ -z \"${LL_VERSION}\" ] || [ \"${LL_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest LiteLoaderBDS from GitHub\"\r\n DOWNLOAD_GIT_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | head -1)\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${LL_VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n echo -e \"\\n Downloading ${LL_VERSION} LiteLoaderBDS from GitHub\"\r\n DOWNLOAD_GIT_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${LL_VERSION}\" '.[] | select(.tag_name==$LL_VERSION) | .assets[].browser_download_url' | head -1)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_GIT_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | head -1)\r\n fi\r\nfi\r\n\r\ncurl -sSL -o LiteLoader.zip ${DOWNLOAD_GIT_URL}\r\nunzip -o LiteLoader.zip\r\nmv -f LiteLoaderBDS\/* \/mnt\/server\r\nrm LiteLoader.zip\r\ntimeout 30s wine PeEditor.exe\r\nrm -rf '\/root\/.wine' \/mnt\/server\/LiteLoaderBDS\/\r\n\r\n# Downloading Launcher and finishing touches\r\nwget https:\/\/io.ivampiresp.com\/d\/Software\/MCServer\/BDS\/LiteLoader\/lae-ll-launcher\r\nchmod +x lae-ll-launcher\r\necho \"Finished Downloading Liteloader...\"", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "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" + } + ] +} diff --git a/ptero_eggs/minecraft/bedrock/PowerNukkitX/README.md b/ptero_eggs/minecraft/bedrock/PowerNukkitX/README.md new file mode 100644 index 0000000..641d7d5 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/PowerNukkitX/README.md @@ -0,0 +1,4 @@ +# PowerNukkitX + +[PowerNukkitX](https://github.com/PowerNukkitX/PowerNukkitX) +PowerNukkitX is a software for minecraft bedrock edition in Java which is a fork of PowerNukkit \ No newline at end of file diff --git a/ptero_eggs/minecraft/bedrock/PowerNukkitX/egg-powernukkitx.json b/ptero_eggs/minecraft/bedrock/PowerNukkitX/egg-powernukkitx.json new file mode 100644 index 0000000..258a3c1 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/PowerNukkitX/egg-powernukkitx.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-04-20T21:46:27+00:00", + "name": "PowerNukkitX", + "author": "powernukkitx@github.com", + "description": "PowerNukkitX support for Pterodactyl", + "features": null, + "docker_images": { + "ghcr.io\/ptero-eggs\/yolks:debian": "ghcr.io\/ptero-eggs\/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 \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\napt-get update\r\napt-get install -y git curl wget jq file tar unzip zip openssl\r\nmkdir -p \/mnt\/server\/ # Not required. Only here for ptero-eggs's local test setup\r\ncd \/mnt\/server || exit 1\r\nUPGRADE=\"no\"\r\nif [ -d \".\/java\" ]; then\r\nUPGRADE=\"yes\"\r\nfi\r\nwget https:\/\/github.com\/PowerNukkitX\/PNX-CLI\/releases\/download\/0.1.6\/PNX-CLI-Linux-x86.zip -O pnx.zip\r\nwget https:\/\/raw.githubusercontent.com\/PowerNukkitX\/PowerNukkitX\/master\/src\/main\/resources\/default-nukkit.yml -O nukkit.yml\r\nunzip pnx.zip\r\nrm -fr pnx.zip 2>&1 >\/dev\/null\r\nmv .\/target\/linux-x86\/pnx .\/ 2>&1 >\/dev\/null\r\nrm -fr target 2>&1 >\/dev\/null\r\nrm -fr java 2>&1 >\/dev\/null\r\nchmod +x pnx\r\n.\/pnx jvm install=GraalVM\r\nif [ \"$UPGRADE\" == \"no\" ]; then\r\nif [ \"$VERSION\" == \"latest\" ]; then\r\n.\/pnx server install --latest\r\nelse\r\n.\/pnx server install --dev\r\nfi\r\nelse\r\nrm -fr libs 2>&1 >\/dev\/null\r\nif [ \"$VERSION\" == \"latest\" ]; then\r\n.\/pnx server update --latest\r\nelse\r\n.\/pnx server update --dev\r\nfi\r\nfi\r\nrm -fr tmp-GraalVM.tar.gz 2>&1 >\/dev\/null\r\ncat < 1, it will show debug messages in the console + level: 1 + # Enables commands: /status /gc + commands: false + ignored-packets: + - LevelChunkPacket + +timings: + # Turn off the timing completely, no timing object will be created, which can help improve performance + completely-close: false + # Enable core and plugin timings by default + enabled: false + # Enable monitoring at verbose level, include high-frequency timings + verbose: false + # Interval between history frames in ticks + # Default is 5 minutes (6000 ticks) + history-interval: 6000 + # Length of the whole timing history in ticks + # Default is 1 hour (72000 ticks) + # This value is capped at a maximum of history-interval * 12 + history-length: 72000 + # For special cases of servers with special permission to bypass the max + # This max helps keep data file sizes reasonable for processing on Aikar's Timing parser side + # Setting this will not help you bypass the max unless Aikar has added an exception on the API side + bypass-max: false + # If set to true, name of your server won't be sent + privacy: false + ignore: [] + +level-settings: + # The default format that levels will use when created + default-format: anvil + # Automatically change levels tick rate to maintain 20 ticks per second + auto-tick-rate: true + auto-tick-rate-limit: 20 + # Sets the base tick rate (1 = 20 ticks per second, 2 = 10 ticks per second, etc.) + base-tick-rate: 1 + # Tick all players each tick even when other settings disallow this + always-tick-players: false + tick-redstone: true + +chunk-saving: + maximum-size-per-chunk: 1048576 + +chunk-sending: + # Amount of chunks sent to players per tick + per-tick: 8 + # Amount of chunks sent around each player + max-chunks: 192 + # Amount of chunks that need to be sent before spawning the player + spawn-threshold: 56 + # Save a serialized copy of the chunk in memory for faster sending + # Useful in mostly-static worlds where lots of players join at the same time + cache-chunks: false + +chunk-ticking: + # Max amount of chunks processed each tick + per-tick: 40 + # Radius of chunks around a player to tick + tick-radius: 3 + light-updates: false + clear-tick-list: false + +chunk-generation: + # Max. amount of chunks in the waiting queue to be generated + queue-size: 8 + # Max. amount of chunks in the waiting queue to be populated + population-queue-size: 8 + +# Max tick rate for these entities +ticks-per: + animal-spawns: 400 + monster-spawns: 1 + autosave: 6000 + cache-cleanup: 900 + +memory-compression: + enable: true + slots: 32 + default-temperature: 32 + threshold: + freezing-point: 0 + boiling-point: 1024 + absolute-zero: -256 + heat: + melting: 16 + single-operation: 1 + batch-operation: 32 + + +# Max amount of these entities +spawn-limits: + monsters: 70 + animals: 15 + water-animals: 5 + ambient: 15 + +player: + # If true, player data will be saved as players/playername.dat + # If false, nukkit won't save player data as "dat" files, in order that plugins can do something on it. + save-player-data: true + # The time between skin change action in seconds, set to 0 if you dont want the cooldown + skin-change-cooldown: 30 + force-skin-trusted: false + check-movement: true + +aliases: +# Aliases for commands +# Examples: +# showtheversion: version +# savestop: [save-all, stop] + +worlds: +# These settings will override the generator set in server.properties and allows loading multiple levels +# Examples: +#world: +# seed: 404 +# generator: FLAT:2;7,59x1,3x3,2;1;decoration(treecount=80 grasscount=45) + +anti-xray: +#world: +# enabled: true +# level: low +# pre-deobfuscate: true diff --git a/ptero_eggs/minecraft/bedrock/PowerNukkitX/server.properties b/ptero_eggs/minecraft/bedrock/PowerNukkitX/server.properties new file mode 100644 index 0000000..da94fc1 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/PowerNukkitX/server.properties @@ -0,0 +1,40 @@ +#Properties Config file +#2023-07-06 06:07:52 +motd=PowerNukkitX Server +sub-motd=https://powernukkitx.cn +server-port=19132 +server-ip=0.0.0.0 +view-distance=12 +white-list=off +achievements=on +announce-player-achievements=on +spawn-protection=16 +max-players=20 +allow-flight=off +spawn-animals=on +spawn-mobs=on +gamemode=0 +force-gamemode=off +hardcore=off +pvp=on +difficulty=1 +generator-settings= +level-name=world +level-seed= +level-type=DEFAULT +allow-nether=on +allow-the_end=on +use-terra=on +enable-experiment-mode=on +enable-query=on +enable-rcon=off +rcon.password= +auto-save=on +force-resources=off +force-resources-allow-client-packs=off +xbox-auth=on +check-login-time=on +disable-auto-bug-report=off +allow-shaded=off +server-authoritative-movement=server-auth +network-encryption=on diff --git a/ptero_eggs/minecraft/bedrock/README.md b/ptero_eggs/minecraft/bedrock/README.md new file mode 100644 index 0000000..69ae7ec --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/README.md @@ -0,0 +1,37 @@ +# Minecraft Bedrock (Formerly Pocket Edition) + +## [Bedrock](/minecraft/bedrock/bedrock) + +[Minecraft Bedrock Server](https://minecraft.net/en-us/download/server/bedrock/) +The official Minecraft Bedrock (Formerly Minecraft Pocket Edition) server. + +## [gomint](/minecraft/bedrock/gomint) + +[Gomint Bedrock Server](https://github.com/gomint/gomint) +No longer actively maintained. +GoMint is a modern Minecraft Bedrock Edition server enabling you to make your visions come true + +## [LeviLamina](/minecraft/bedrock/LeviLamina/) + +[LeviLamina](https://github.com/LiteLDev/LeviLamina) +A lightweight, modular and versatile mod loader for Minecraft Bedrock Edition, formerly known as LiteLoaderBDS + +## [LiteLoaderBDS](/minecraft/bedrock/LiteLoader-bedrock/) + +[LiteLoaderBDS](https://github.com/LiteLDev/LiteLoaderBDS) +LiteLoaderBDS is an unofficial plugin loader that provides basic API support for Bedrock Dedicated Server. + +## [Nukkit](/minecraft/bedrock/nukkit) + +[Nukkit GitHub](https://github.com/Nukkit/Nukkit) +Nukkit is a Nuclear-Powered Server Software For Minecraft: Pocket Edition + +## [PowerNukkitX](/minecraft/bedrock/PowerNukkitX) + +[PowerNukkitX](https://github.com/PowerNukkitX/PowerNukkitX) +PowerNukkitX is a software for minecraft bedrock edition in Java which is a fork of PowerNukkit + +## [PocketMine MP](/minecraft/bedrock/pocketmine_mp) + +[PocketMine MP](https://github.com/pmmp/PocketMine-MP) +A server software for Minecraft: Bedrock Edition in PHP diff --git a/ptero_eggs/minecraft/bedrock/bedrock/README.md b/ptero_eggs/minecraft/bedrock/bedrock/README.md new file mode 100644 index 0000000..191afb5 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/bedrock/README.md @@ -0,0 +1,24 @@ +# Minecraft Bedrock + +The official Minecraft Bedrock (Formerly Minecraft Pocket Edition) server. + +This is an alpha release server from the mojang team. + +### Server Ports + +Bedrock requires a single port (default 19132) + +| Port | default | +|---------|----------| +| Game | 19132 | + +### Known Issues +Also see the [Mojang Issue tracker](https://bugs.mojang.com/projects/BDS/issues/) + +* On start the server will report is is listening on port 19132 but is listening on the correct port +* Constant `NO LOG FILE` in the console before every log line. +* Server chat is not printed to the console. +* when you set ops in game they do not get saved. + +### arm64 +* The arm64 may not perform as expected due to the amd64 to arm emulaton. diff --git a/ptero_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock-ARM64.json b/ptero_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock-ARM64.json new file mode 100644 index 0000000..f02a1a0 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock-ARM64.json @@ -0,0 +1,94 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-09-24T13:43:50-07: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\/ptero-eggs\/yolks:box64": "ghcr.io\/ptero-eggs\/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}", + "startup": "{\r\n \"done\": \"Server started\"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!/bin/bash\r\n\r\napt update\r\napt install -y zip unzip wget curl jq\r\n\r\ncd /mnt/server || { echo \"Failed to change directory to /mnt/server\"; exit 1; }\r\n\r\n# Default version to latest if not set\r\nBEDROCK_VERSION=${BEDROCK_VERSION:-latest}\r\n\r\n# Filename to use for the downloaded file\r\nDOWNLOAD_FILE=\"bedrock-server-installer.zip\"\r\n\r\n# Minecraft CDN Akamai blocks script user-agents\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\n\r\nif [ \"${BEDROCK_VERSION}\" == \"latest\" ]; then\r\n echo \"Finding latest Bedrock server version\"\r\n DOWNLOAD_URL=$(curl --silent https://net-secondary.web.minecraft-services.net/api/v1.0/download/links | jq -r '.result.links[] | select(.downloadType == \"serverBedrockLinux\") | .downloadUrl')\r\n if [ -z \"${DOWNLOAD_URL}\" ]; then\r\n echo \"Failed to retrieve the latest Bedrock server version. Please check your network connection or the Minecraft API.\"\r\n exit 1\r\n fi\r\nelse\r\n echo \"Downloading ${BEDROCK_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https://www.minecraft.net/bedrockdedicatedserver/bin-linux/bedrock-server-$BEDROCK_VERSION.zip\r\nfi\r\n\r\necho \"Download URL: $DOWNLOAD_URL\"\r\n\r\n\r\n\r\n\r\n\r\necho -e \"Backing up config files\"\r\nmkdir /tmp/config_backup\r\ncp -v server.properties /tmp/config_backup/ 2>/dev/null \r\ncp -v permissions.json /tmp/config_backup/ 2>/dev/null \r\ncp -v allowlist.json /tmp/config_backup/ 2>/dev/null \r\n\r\n\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\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\"\r\ncp -rfv /tmp/config_backup/* /mnt/server/ 2>/dev/null || { echo \"No files to restore\"; }\r\n\r\nchmod +x bedrock_server\r\n\r\necho -e \"Install Completed\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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/ptero_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock.json b/ptero_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock.json new file mode 100644 index 0000000..881902d --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock.json @@ -0,0 +1,94 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-06-15T07:15:38+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\/ptero-eggs\/yolks:debian": "ghcr.io\/ptero-eggs\/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}", + "startup": "{\r\n \"done\": \"Server started\"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y zip unzip wget curl jq\r\n\r\ncd \/mnt\/server || { echo \"Failed to change directory to \/mnt\/server\"; exit 1; }\r\n\r\n# Default version to latest if not set\r\nBEDROCK_VERSION=${BEDROCK_VERSION:-latest}\r\n\r\n# Filename to use for the downloaded file\r\nDOWNLOAD_FILE=\"bedrock-server-installer.zip\"\r\n\r\n# Minecraft CDN Akamai blocks script user-agents\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\n\r\nif [ \"${BEDROCK_VERSION}\" == \"latest\" ]; then\r\n echo \"Finding latest Bedrock server version\"\r\n DOWNLOAD_URL=$(curl --silent https:\/\/net-secondary.web.minecraft-services.net\/api\/v1.0\/download\/links | jq -r '.result.links[] | select(.downloadType == \"serverBedrockLinux\") | .downloadUrl')\r\n if [ -z \"${DOWNLOAD_URL}\" ]; then\r\n echo \"Failed to retrieve the latest Bedrock server version. Please check your network connection or the Minecraft API.\"\r\n exit 1\r\n fi\r\nelse\r\n echo \"Downloading ${BEDROCK_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/www.minecraft.net\/bedrockdedicatedserver\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\r\nfi\r\n\r\necho \"Download URL: $DOWNLOAD_URL\"\r\n\r\n\r\n\r\n\r\n\r\necho -e \"Backing up config files\"\r\nmkdir \/tmp\/config_backup\r\ncp -v server.properties \/tmp\/config_backup\/ 2>\/dev\/null \r\ncp -v permissions.json \/tmp\/config_backup\/ 2>\/dev\/null \r\ncp -v allowlist.json \/tmp\/config_backup\/ 2>\/dev\/null \r\n\r\n\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\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\"\r\ncp -rfv \/tmp\/config_backup\/* \/mnt\/server\/ 2>\/dev\/null || { echo \"No files to restore\"; }\r\n\r\nchmod +x bedrock_server\r\n\r\necho -e \"Install Completed\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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/ptero_eggs/minecraft/bedrock/gomint/README.md b/ptero_eggs/minecraft/bedrock/gomint/README.md new file mode 100644 index 0000000..e5c5d04 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/gomint/README.md @@ -0,0 +1,11 @@ +# gomint + +Easy-to-use, highly configurable Minecraft Bedrock Edition
 server software with the ability to sustain in a low-resource environment. + +### Server Ports + +Bedrock server require a single port (default 19132) + +| Port | default | +|---------|----------| +| Game | 19132 | \ No newline at end of file diff --git a/ptero_eggs/minecraft/bedrock/gomint/egg-go-mint.json b/ptero_eggs/minecraft/bedrock/gomint/egg-go-mint.json new file mode 100644 index 0000000..a2282be --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/gomint/egg-go-mint.json @@ -0,0 +1,39 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-04-02T11:06:25+02: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": { + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/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}", + "startup": "{\r\n \"done\": \"Done in \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "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}\" ] && [ -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\/ptero-eggs\/game-eggs\/main\/minecraft\/bedrock\/gomint\/server.yml\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [] +} \ No newline at end of file diff --git a/ptero_eggs/minecraft/bedrock/gomint/server.yml b/ptero_eggs/minecraft/bedrock/gomint/server.yml new file mode 100644 index 0000000..bddde4b --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/gomint/server.yml @@ -0,0 +1,4 @@ +# The host and port to bind the server to +listener: + port: 19132 + ip: 0.0.0.0 \ No newline at end of file diff --git a/ptero_eggs/minecraft/bedrock/nukkit/README.md b/ptero_eggs/minecraft/bedrock/nukkit/README.md new file mode 100644 index 0000000..b026035 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/nukkit/README.md @@ -0,0 +1,5 @@ +# Nukkit + +[Nukkit](https://github.com/CloudburstMC/Nukkit) + +Nukkit is a nuclear-powered server software for Minecraft Bedrock Edition diff --git a/ptero_eggs/minecraft/bedrock/nukkit/egg-nukkit.json b/ptero_eggs/minecraft/bedrock/nukkit/egg-nukkit.json new file mode 100644 index 0000000..f74108c --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/nukkit/egg-nukkit.json @@ -0,0 +1,55 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-04-20T21:46:27+00:00", + "name": "Nukkit", + "author": "parker@parkervcp.com", + "description": "Nukkit is a nuclear-powered server software for Minecraft Bedrock Edition\r\n\r\nhttps:\/\/cloudburstmc.org", + "features": null, + "docker_images": { + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}} --language eng", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/ash\r\n# Nukkit Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk add --no-cache openssl\r\n\r\ncd \/mnt\/server\r\n\r\n## Only download if a path is provided, otherwise continue.\r\nif [ \"${NUKKIT_VERSION}\" == \"latest\" ]; then\r\n wget https:\/\/repo.opencollab.dev\/api\/maven\/latest\/file\/maven-snapshots\/cn\/nukkit\/nukkit\/1.0-SNAPSHOT?extension=jar -O ${SERVER_JARFILE}\r\nelif [ -n \"${NUKKIT_VERSION}\" ]; then\r\n wget https:\/\/repo.opencollab.dev\/maven-snapshots\/cn\/nukkit\/nukkit\/1.0-SNAPSHOT\/nukkit-${NUKKIT_VERSION}.jar -O ${SERVER_JARFILE}\r\nfi\r\n\r\necho -s \"Install completed!\"", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Server Jar File", + "description": "The name of the Nukkit 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)$\/", + "field_type": "text" + }, + { + "name": "Nukkit Version", + "description": "The snapshot version of Nukkit to download (e.g. 1.0-20250805.172443-1219). Use \"latest\" for latest or leave empty and download manually.", + "env_variable": "NUKKIT_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:50", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/ptero_eggs/minecraft/bedrock/nukkit/nukkit.yml b/ptero_eggs/minecraft/bedrock/nukkit/nukkit.yml new file mode 100644 index 0000000..141b4e4 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/nukkit/nukkit.yml @@ -0,0 +1,103 @@ +# Advanced configuration file for Nukkit +# Some of these settings are safe, others can break your server if modified incorrectly +# New settings/defaults won't appear automatically on this file when upgrading + +settings: + #Multi-language setting + #Available: eng, chs, cht, jpn, rus, spa, pol, bra, kor, ukr, deu, ltu, idn, cze, tur, fin + language: "eng" + #Whether to send all strings translated to server locale or let the device handle them + force-language: false + shutdown-message: "Server closed" + #Allow listing plugins via Query + query-plugins: true + #Show a console message when a plugin uses deprecated API methods + deprecated-verbose: true + #Number of AsyncTask workers + #If set to auto, it'll try to detect the number of cores (and at least 4) + async-workers: auto + +network: + #Threshold for batching packets, in bytes. Only these packets will be compressed + #Set to 0 to compress everything, -1 to disable + batch-threshold: 256 + #Compression level used of Zlib when sending batched packets. Higher = more CPU, less bandwidth usage + compression-level: 5 + #Enable high performance packet compression using Snappy (experimental) + compression-use-snappy: false + #Enable network encryption + encryption: true + +debug: + #If > 1, it will show debug messages in the console + level: 1 + +level-settings: + #The default format that levels will use when created + default-format: leveldb + #Automatically change levels tick rate to maintain 20 ticks per second + auto-tick-rate: true + auto-tick-rate-limit: 20 + #Sets the base tick rate (1 = 20 ticks per second, 2 = 10 ticks per second, etc.) + base-tick-rate: 1 + #Tick all players each tick even when other settings disallow this + always-tick-players: false + +chunk-sending: + #Amount of chunks sent to players per tick + per-tick: 4 + #Amount of chunks that need to be sent before spawning the player + spawn-threshold: 56 + #Save a serialized copy of the chunk in memory for faster sending + #Useful in mostly-static worlds where lots of players join at the same time + cache-chunks: false + +chunk-ticking: + #Max amount of chunks processed each tick + per-tick: 40 + #Radius of chunks around a player to tick + tick-radius: 3 + clear-tick-list: false + +chunk-generation: + #Max. amount of chunks in the waiting queue to be generated + queue-size: 8 + #Max. amount of chunks in the waiting queue to be populated + population-queue-size: 8 + +leveldb: + #Use native LevelDB implementation for better performance + use-native: false + #Set LevelDB memory cache size + cache-size-mb: 80 + +ticks-per: + #How often worlds and player data are saved when auto-save=on in server.properties + autosave: 6000 + +player: + #If true, player data will be saved as players/playername.dat + #If false, nukkit won't save player data as "dat" files, in order that plugins can do something on it. + save-player-data: true + #The time between skin change action in seconds, set to 0 if you dont want the cooldown + skin-change-cooldown: 15 + #Attacking entities resets sprinting, you can disable that here + attack-stop-sprint: true + +aliases: + #Aliases for commands + #Examples: + #showtheversion: version + #savestop: [save-all, stop] + +worlds: + #Worlds that the server will use. Options are specific to the chosen generator, and may result in broken generation or + #be ignored completely. + world: + #seed: 404 + generator: normal + #options: + nether: + #seed: my_cool_nether_seed + generator: nether + #options: diff --git a/ptero_eggs/minecraft/bedrock/nukkit/server.properties b/ptero_eggs/minecraft/bedrock/nukkit/server.properties new file mode 100644 index 0000000..8385140 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/nukkit/server.properties @@ -0,0 +1,29 @@ +server-ip=0.0.0.0 +server-port=19132 +query.port=19132 +motd=A Minecraft Server +sub-motd=Powered by Nukkit +view-distance=10 +achievements=on +announce-player-achievements=on +spawn-protection=16 +gamemode=0 +force-gamemode=off +difficulty=2 +hardcore=off +pvp=on +white-list=off +generator-settings= +level-name=world +level-seed= +level-type=default +enable-rcon=off +force-resources=off +force-resources-allow-client-packs=off +xbox-auth=on +auto-save=on +force-language=off +enable-query=off +allow-flight=off +allow-nether=on +allow-the-end=on diff --git a/ptero_eggs/minecraft/bedrock/pocketmine_mp/README.md b/ptero_eggs/minecraft/bedrock/pocketmine_mp/README.md new file mode 100644 index 0000000..2dff56a --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/pocketmine_mp/README.md @@ -0,0 +1,5 @@ +# PocketMine MP + +[PocketMine MP](https://github.com/pmmp/PocketMine-MP) + +A server software for Minecraft: Bedrock Edition in PHP diff --git a/ptero_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json b/ptero_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json new file mode 100644 index 0000000..0f96692 --- /dev/null +++ b/ptero_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-04-20T21:46:27+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": [], + "docker_images": { + "ghcr.io\/ptero-eggs\/yolks:debian": "ghcr.io\/ptero-eggs\/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 \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\napt-get update\r\napt-get install -y git curl wget jq file tar unzip zip\r\n\r\nmkdir -p \/mnt\/server\/ # Not required. Only here for parkervcp's local test setup\r\n\r\ncd \/mnt\/server || exit 1\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && printf \"x86_64\" || 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 local php_binary_url\r\n if [[ \"$VERSION\" == \"PM5\" ]]; then\r\n php_binary_url=\"https:\/\/github.com\/pmmp\/PHP-Binaries\/releases\/download\/pm5-latest\/PHP-8.2-Linux-${ARCH}-PM5.tar.gz\"\r\n elif [[ \"$VERSION\" == \"PM4\" ]]; then\r\n php_binary_url=\"https:\/\/github.com\/pmmp\/PHP-Binaries\/releases\/download\/pm4-latest\/PHP-8.1-Linux-${ARCH}-PM4.tar.gz\"\r\n else\r\n printf \"Unsupported version: %s\\n\" \"${VERSION}\"\r\n exit 1\r\n fi\r\n\r\n printf \"Downloading PHP binary for %s from %s\\n\" \"$VERSION\" \"$php_binary_url\"\r\n curl --location --progress-bar \"$php_binary_url\" | 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 && \\\r\n sed -i'bak' \"s{^extension_dir=.*{extension_dir=\\\"$EXTENSION_DIR\\\"{\" bin\/php7\/bin\/php.ini || \\\r\n echo \"extension_dir=\\\"$EXTENSION_DIR\\\"\" >>bin\/php7\/bin\/php.ini\r\n}\r\n\r\ndownload_pmmp() {\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | 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\\n\" \"${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}\" == \"x86_64\" ]]; 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-get 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 to download compile.sh for PHP version $REQUIRED_PHP_VERSION\"\r\n curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/latest\/compile.sh\r\n chmod +x compile.sh\r\n\r\n cat < \/dev\/null 2>&1 || { echo \"apt update failed!\"; exit 1; }\r\n echo -e \"\\tRunning apt install\"\r\n apt install -y wget jq unzip > \/dev\/null 2>&1 || { echo \"apt install failed!\"; exit 1; }\r\n}\r\n\r\nCURSEFORGE_API_URL=\"https:\/\/api.curseforge.com\/v1\/mods\/\"\r\nCURSEFORGE_API_HEADERS=(\"--header=Accept: application\/json\" \"--header=x-api-key: ${API_KEY}\")\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving CurseForge project information...\"\r\n local PROJECT_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.data.name \/\/ empty')\r\n\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n local IS_SERVER_PACK=false\r\n\r\n if [[ -z \"${VERSION_ID}\" || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo file ID specified, using latest file\"\r\n VERSION_ID=$(echo \"$PROJECT_DATA\" | jq -r '.data.mainFileId \/\/ empty')\r\n\r\n local VERSION_SERVER_PACK=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .isServerPack')\"\r\n local VERSION_SERVER_ID=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .serverPackFileId')\"\r\n\r\n if [[ \"${VERSION_SERVER_PACK}\" == \"false\" && -n \"${VERSION_SERVER_ID}\" ]]; then\r\n echo -e \"\\tFound server pack file id '${VERSION_SERVER_ID}'\"\r\n VERSION_ID=$VERSION_SERVER_ID\r\n IS_SERVER_PACK=true\r\n elif [[ \"${VERSION_SERVER_PACK}\" == \"true\" ]]; then\r\n IS_SERVER_PACK=true\r\n fi\r\n else\r\n echo -e \"\\tChecking if provided file id '${VERSION_ID}' exists\"\r\n\r\n local FILE_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${VERSION_ID}\" -O -)\r\n\r\n if [[ -z \"${FILE_DATA}\" ]]; then\r\n echo -e \"\\tERROR: File id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n IS_SERVER_PACK=$(echo -e \"${FILE_DATA}\" | jq -r '.data.isServerPack \/\/ \"false\"')\r\n\r\n if [[ \"${IS_SERVER_PACK}\" == \"false\" ]]; then\r\n local VERSION_SERVER_PACK=\"$(echo -e \"${FILE_DATA}\" | jq -r '.data.serverPackFileId \/\/ empty')\"\r\n if [[ -n \"${VERSION_SERVER_PACK}\" ]]; then\r\n echo -e \"\\tFound server pack file id '${VERSION_SERVER_PACK}'\"\r\n VERSION_ID=$VERSION_SERVER_PACK\r\n IS_SERVER_PACK=true\r\n fi\r\n else\r\n IS_SERVER_PACK=true\r\n fi\r\n fi\r\n\r\n # Check if version id is unset or empty string\r\n if [[ -z \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: No file id found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ \"${IS_SERVER_PACK}\" == \"false\" ]]; then\r\n echo -e \"\\tWARNING: File id '${VERSION_ID}' is not a server pack, attempting to use client files\"\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${VERSION_ID}\/download-url\" -O -)\r\n\r\n if [[ -z \"${JSON_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve file data for file id '${VERSION_ID}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tParsing CurseForge pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo -e \"$JSON_DATA\" | jq -r '.data \/\/ empty')\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for file ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n # download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n if ! wget -q \"${DOWNLOAD_URL}\" -O server.zip; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nfunction get_loader {\r\n echo -e \"Retrieving loader information...\"\r\n\r\n local PROJECT_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.data.name \/\/ empty')\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n local FILE_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${VERSION_ID}\" -O -)\r\n\r\n if [[ -z \"${FILE_DATA}\" ]]; then\r\n echo -e \"\\tERROR: File id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n local IS_SERVER_PACK=$(echo -e \"${FILE_DATA}\" | jq -r '.data.isServerPack \/\/ \"false\"')\r\n local CLIENT_VERSION_ID;\r\n\r\n if [[ \"${IS_SERVER_PACK}\" == \"true\" ]]; then\r\n CLIENT_VERSION_ID=\"$(echo -e \"${FILE_DATA}\" | jq -r '.data.parentProjectFileId \/\/ empty')\"\r\n else\r\n CLIENT_VERSION_ID=$VERSION_ID\r\n fi\r\n\r\n if [[ -z \"${CLIENT_VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: File id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tRetrieving file information for '${CLIENT_VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${CLIENT_VERSION_ID}\/download-url\" -O -)\r\n\r\n echo -e \"\\tParsing CurseForge pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo -e \"$JSON_DATA\" | jq -r '.data \/\/ empty')\r\n\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for file id ${CLIENT_VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n # download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n wget -q \"${DOWNLOAD_URL}\" -O client.zip\r\n\r\n echo -e \"\\tUnpacking client manifest\"\r\n unzip -jo client.zip manifest.json -d \"${SERVER_DIR}\"\r\n mv \"${SERVER_DIR}\/manifest.json\" \"${SERVER_DIR}\/client.manifest.json\" # rename to avoid conflicts with main manifest\r\n rm -rf client.zip\r\n\r\n echo -e \"\\tParsing client manifest\"\r\n local MANIFEST=\"${SERVER_DIR}\/client.manifest.json\"\r\n\r\n LOADER_ID=$(jq -r '.minecraft.modLoaders[]? | select(.primary == true) | .id' \"${MANIFEST}\")\r\n LOADER_NAME=$(echo \"${LOADER_ID}\" | cut -d'-' -f1)\r\n LOADER_VERSION=$(echo \"${LOADER_ID}\" | cut -d'-' -f2)\r\n\r\n if [[ -z \"${LOADER_NAME}\" || -z \"${LOADER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No loader found in client manifest!\"\r\n exit 1\r\n fi\r\n\r\n MINECRAFT_VERSION=$(jq -r '.minecraft.version \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MINECRAFT_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No minecraft version found in client manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tFound loader ${LOADER_NAME} ${LOADER_VERSION} for Minecraft ${MINECRAFT_VERSION}\"\r\n}\r\n\r\nfunction unzip-strip() (\r\n set -u\r\n\r\n local archive=$1\r\n local destdir=${2:-}\r\n shift; shift || :\r\n echo -e \"\\tUnpacking ${archive} to ${destdir}\"\r\n\r\n echo -e \"\\tCreating temporary directory\"\r\n local tmpdir=\/mnt\/server\/tmp\r\n if ! mkdir -p \"${tmpdir}\"; then\r\n echo -e \"\\tERROR: mkdir failed to create temporary directory\"\r\n return 1\r\n fi\r\n\r\n trap 'rm -rf -- \"$tmpdir\"' EXIT\r\n\r\n echo -e \"\\tUnpacking archive\"\r\n\r\n if ! unzip -q \"$archive\" -d \"$tmpdir\"; then\r\n echo -e \"\\tERROR: unzip failed to unpack archive\"\r\n return 1\r\n fi\r\n\r\n echo -e \"\\tSetting glob settings\"\r\n\r\n shopt -s dotglob\r\n\r\n echo -e \"\\tCleaning up directory structure\"\r\n\r\n local files=(\"$tmpdir\"\/*) name i=1\r\n\r\n if (( ${#files[@]} == 1 )) && [[ -d \"${files[0]}\" ]]; then\r\n name=$(basename \"${files[0]}\")\r\n files=(\"$tmpdir\"\/*\/*)\r\n else\r\n name=$(basename \"$archive\"); name=${archive%.*}\r\n files=(\"$tmpdir\"\/*)\r\n fi\r\n\r\n if [[ -z \"$destdir\" ]]; then\r\n destdir=.\/\"$name\"\r\n fi\r\n\r\n while [[ -f \"$destdir\" ]]; do\r\n destdir=${destdir}-$((i++));\r\n done\r\n\r\n echo -e \"\\tCopying files to ${destdir}\"\r\n\r\n mkdir -p \"$destdir\"\r\n cp -ar \"$@\" -t \"$destdir\" -- \"${files[@]}\"\r\n rm -rf \"$tmpdir\"\r\n)\r\n\r\nfunction unpack_zip {\r\n echo -e \"Unpacking server files...\"\r\n unzip-strip server.zip \"${SERVER_DIR}\"\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/manifest.json\"\r\n jq -c '.files[]? | select(.required == true) | {project: .projectID, file: .fileID}' \"${MANIFEST}\" | while read -r mod; do\r\n local MOD_PROJECT_ID=$(echo \"${mod}\" | jq -r '.project \/\/ empty')\r\n local MOD_FILE_ID=$(echo \"${mod}\" | jq -r '.file \/\/ empty')\r\n\r\n if [[ -z \"${MOD_PROJECT_ID}\" || -z \"${MOD_FILE_ID}\" ]]; then\r\n echo -e \"\\tERROR: Failed to parse project id or file id for mod '${mod}'\"\r\n exit 1\r\n fi\r\n\r\n local FILE_URL=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${MOD_PROJECT_ID}\/files\/${MOD_FILE_ID}\/download-url\" -O - | jq -r '.data \/\/ empty')\r\n\r\n if [[ -z \"${FILE_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for mod ${MOD_PROJECT_ID} ${MOD_FILE_ID}\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading ${FILE_URL}\"\r\n\r\n if ! wget -q \"${FILE_URL}\" -P \"${SERVER_DIR}\/mods\"; then\r\n echo -e \"\\tERROR: Failed to download mod ${MOD_PROJECT_ID} ${MOD_FILE_ID}\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local FORGE_VERSION=$LOADER_VERSION\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n local FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n local FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n local FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n\r\n if ! wget -q -O forge-installer.jar \"${FORGE_INSTALLER}\"; then\r\n echo -e \"\\tERROR: Failed to download Forge Installer ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n # Remove old Forge files so we can safely update\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n if ! java -jar forge-installer.jar --installServer > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: Failed to install Forge Server ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv \"$FORGE_JAR\" forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nNEOFORGE_INSTALLER_URL=\"https:\/\/maven.neoforged.net\/releases\/net\/neoforged\"\r\nfunction json_download_neoforge {\r\n echo \"Downloading NeoForge...\"\r\n local NEOFORGE_VERSION=$LOADER_VERSION\r\n\r\n # The 1.20.1 release lives in a different repository and is called \"forge\" instead of \"neoforge\"\r\n if [[ \"${NEOFORGE_VERSION}\" =~ \"1.20.1-\" ]]; then\r\n NEOFORGE_URL=$NEOFORGE_INSTALLER_URL\/forge\/${NEOFORGE_VERSION}\/forge-${NEOFORGE_VERSION}\r\n ARTIFACT_NAME=\"forge\"\r\n else\r\n NEOFORGE_URL=$NEOFORGE_INSTALLER_URL\/neoforge\/${NEOFORGE_VERSION}\/neoforge-${NEOFORGE_VERSION}\r\n ARTIFACT_NAME=\"neoforge\"\r\n fi\r\n\r\n\r\n echo -e \"\\tUsing NeoForge ${NEOFORGE_VERSION} from ${NEOFORGE_URL}\"\r\n\r\n local NEOFORGE_INSTALLER=\"${NEOFORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading NeoForge Installer ${NEOFORGE_VERSION} from ${NEOFORGE_INSTALLER}\"\r\n\r\n if ! wget -q -O neoforge-installer.jar \"${NEOFORGE_INSTALLER}\"; then\r\n echo -e \"\\tERROR: Failed to download NeoForge Installer ${NEOFORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n # Remove old NeoForge files so we can safely update\r\n rm -rf libraries\/net\/neoforged\/${ARTIFACT_NAME}\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling NeoForge Server ${NEOFORGE_VERSION}\"\r\n if ! java -jar neoforge-installer.jar --installServer > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: Failed to install Forge Server ${NEOFORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n # Symlink the startup arguments to the server directory\r\n ln -sf libraries\/net\/neoforged\/${ARTIFACT_NAME}\/*\/unix_args.txt unix_args.txt\r\n\r\n rm neoforge-installer.jar\r\n\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local FABRIC_VERSION=$LOADER_VERSION\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer url found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O fabric-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar fabric-installer.jar server -mcversion \"${MC_VERSION}\" -loader \"${FABRIC_VERSION}\" -downloadMinecraft; then\r\n echo -e \"\\tERROR: Failed to install Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local QUILT_VERSION=$LOADER_VERSION\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer URL found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O quilt-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar quilt-installer.jar install server \"${MC_VERSION}\" \"${QUILT_VERSION}\" --download-server --install-dir=.\/; then\r\n echo -e \"\\tERROR: Failed to install Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ -z \"${PROJECT_ID}\" ]]; then\r\n echo \"ERROR: You must specify a PROJECT_ID environment variable!\"\r\n exit 1\r\nfi\r\n\r\nif [[ ! \"${PROJECT_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\nfi\r\n\r\nget_loader\r\nunpack_zip\r\n\r\nif [[ -f \"${SERVER_DIR}\/manifest.json\" ]]; then\r\n echo \"Found manifest.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/client.manifest.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/client.manifest.json\"\r\n\r\n if [[ $LOADER_NAME == \"forge\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $LOADER_NAME == \"neoforge\" ]]; then\r\n json_download_neoforge\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\n\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"", + "container": "eclipse-temurin:8-jdk-jammy", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Modpack Project ID", + "description": "The modpack project ID from the CurseForge site on the pack page, or 'zip' if installing from an uploaded server.zip file.\r\n\r\nFor example, the project Id of https:\/\/www.curseforge.com\/minecraft\/modpacks\/bofa-mods ID is 375152", + "env_variable": "PROJECT_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|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 get an API key here: https:\/\/console.curseforge.com", + "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/ptero_eggs/minecraft/java/fabric/README.md b/ptero_eggs/minecraft/java/fabric/README.md new file mode 100644 index 0000000..b577ce8 --- /dev/null +++ b/ptero_eggs/minecraft/java/fabric/README.md @@ -0,0 +1,13 @@ +# Fabric + +Fabric is a modular, lightweight mod loader for Minecraft. + +[Fabric Website](https://fabricmc.net/) + +## Server Ports + +The fabric server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/fabric/egg-fabric.json b/ptero_eggs/minecraft/java/fabric/egg-fabric.json new file mode 100644 index 0000000..bd2624c --- /dev/null +++ b/ptero_eggs/minecraft/java/fabric/egg-fabric.json @@ -0,0 +1,83 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-11-04T04:34:52+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 24": "ghcr.io\/ptero-eggs\/yolks:java_24", + "java 23": "ghcr.io\/ptero-eggs\/yolks:java_23", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/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 }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Fabric MC Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl jq unzip dos2unix wget\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n# Enable snapshots\r\nif [ -z \"$MC_VERSION\" ] || [ \"$MC_VERSION\" == \"latest\" ]; then\r\n MC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/game | jq -r '.[] | select(.stable== true )|.version' | head -n1)\r\nelif [ \"$MC_VERSION\" == \"snapshot\" ]; then\r\n MC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/game | jq -r '.[] | select(.stable== false )|.version' | head -n1)\r\nfi\r\n\r\nif [ -z \"$FABRIC_VERSION\" ] || [ \"$FABRIC_VERSION\" == \"latest\" ]; then\r\n FABRIC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/installer | jq -r '.[0].version')\r\nfi\r\n\r\nif [ -z \"$LOADER_VERSION\" ] || [ \"$LOADER_VERSION\" == \"latest\" ]; then\r\n LOADER_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/loader | jq -r '.[] | select(.stable== true )|.version' | head -n1)\r\nelif [ \"$LOADER_VERSION\" == \"snapshot\" ]; then\r\n LOADER_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/loader | jq -r '.[] | select(.stable== false )|.version' | head -n1)\r\nfi\r\n\r\nwget -O fabric-installer.jar https:\/\/maven.fabricmc.net\/net\/fabricmc\/fabric-installer\/$FABRIC_VERSION\/fabric-installer-$FABRIC_VERSION.jar\r\njava -jar fabric-installer.jar server -mcversion $MC_VERSION -loader $LOADER_VERSION -downloadMinecraft\r\nmv server.jar minecraft-server.jar\r\nmv fabric-server-launch.jar server.jar\r\necho \"serverJar=minecraft-server.jar\" > fabric-server-launcher.properties\r\necho -e \"Install Complete\"", + "container": "eclipse-temurin:21-jdk-jammy", + "entrypoint": "bash" + } + }, + "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" + } + ] +} diff --git a/ptero_eggs/minecraft/java/folia/README.md b/ptero_eggs/minecraft/java/folia/README.md new file mode 100644 index 0000000..ab62b84 --- /dev/null +++ b/ptero_eggs/minecraft/java/folia/README.md @@ -0,0 +1,13 @@ +# Folia + +Fork of Paper which adds regionised multithreading to the dedicated server. + +Check out the [Folia Website](https://papermc.io/) for more information. + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/folia/egg-folia.json b/ptero_eggs/minecraft/java/folia/egg-folia.json new file mode 100644 index 0000000..0b451e0 --- /dev/null +++ b/ptero_eggs/minecraft/java/folia/egg-folia.json @@ -0,0 +1,82 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2026-03-27T14:36:34+01: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 25": "ghcr.io\/ptero-eggs\/yolks:java_25", + "Java 22": "ghcr.io\/ptero-eggs\/yolks:java_22", + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/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 \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/ash\r\n# Folia Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=folia\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep -m1 true`\r\n\tLATEST_VERSION=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Specified version not found. Defaulting to the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\r\n\tBUILD_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`\r\n\tLATEST_BUILD=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f server.properties ]; then\r\n echo -e \"Downloading MC server.properties\"\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/ptero-eggs\/game-eggs\/main\/minecraft\/java\/server.properties\r\nfi", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Minecraft Version", + "description": "The version of minecraft to download. \r\n\r\nLeave at latest to always get the latest version. Invalid versions will default to latest.", + "env_variable": "MINECRAFT_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Server Jar File", + "description": "The name of the server jarfile to run the server with.", + "env_variable": "SERVER_JARFILE", + "default_value": "server.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/", + "field_type": "text" + }, + { + "name": "Download Path", + "description": "A URL to use to download a server.jar rather than the ones in the install script. This is not user viewable.", + "env_variable": "DL_PATH", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Build Number", + "description": "The build number for the folia release.\r\n\r\nLeave at latest to always get the latest version. Invalid versions will default to latest.", + "env_variable": "BUILD_NUMBER", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/forge/forge/README.md b/ptero_eggs/minecraft/java/forge/forge/README.md new file mode 100644 index 0000000..0417423 --- /dev/null +++ b/ptero_eggs/minecraft/java/forge/forge/README.md @@ -0,0 +1,15 @@ +# Forge Generic + +## This is a generic egg for the forge standalone server + +This will download the latest jar for a specific forge version. + +this has a fix for the broken 1.7.10 and 1.8.9 versions forge has + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/forge/forge/egg-forge-enhanced.json b/ptero_eggs/minecraft/java/forge/forge/egg-forge-enhanced.json new file mode 100644 index 0000000..5e70984 --- /dev/null +++ b/ptero_eggs/minecraft/java/forge/forge/egg-forge-enhanced.json @@ -0,0 +1,81 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-11-04T04:34:52+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 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s \"-jar {{SERVER_JARFILE}}\" || printf %s \"@unix_args.txt\" )", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# 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\" ]] && [[ \"${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}\" == \"\" ]] && [[ \"${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\" && $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 \"-----------------------------------------\"", + "container": "eclipse-temurin:8-jdk-jammy", + "entrypoint": "bash" + } + }, + "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" + } + ] +} diff --git a/ptero_eggs/minecraft/java/ftb/README.md b/ptero_eggs/minecraft/java/ftb/README.md new file mode 100644 index 0000000..5eef450 --- /dev/null +++ b/ptero_eggs/minecraft/java/ftb/README.md @@ -0,0 +1,36 @@ +# FTB Modpacks + +A generic service to pull FTB modpacks from api.feed-the-beast.com. +There are 2 ways to install a server through this service. +The first method only requires you to know the modpacks name and (optionally) version. +The second method requires you to know the id for the modpack and (optionally) version in the api. + +## Method 1 (Recommended) + +- FTB_SEARCH_TERM: the modpack name to query for, must be at least 3 characters long. + EX: for FTB: Interactions you would do "interactions". +- FTB_VERSION_STRING: the string version that you want to install. Leave blank to install latest stable release. + EX: for FTB: Interactions 2.0.2, you would put "2.0.2". + +## Method 2 + +- FTB_MODPACK_ID: the id that directs to the modpack in the api. + EX: for FTB: Interactions the id would be "5". `https://api.feed-the-beast.com/v1/modpacks/public/modpack/5` +- FTB_MODPACK_VERSION_ID: the version id in the api. Leave blank to install latest stable release. + EX: for FTB: Interactions 2.0.2 the id is "86". `https://api.feed-the-beast.com/v1/modpacks/public/modpack/5/86` + +**NOTE** +**Not all FTB packs come with a server.properties file, due to this the server.properties file +may not get updated with the correct ip address and port at first launch. +Please restart the server after first launch to fix this.** + +## Neoforged +If you have trouble using an neoforge pack, make sure to select the latest java. + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/ftb/egg-ftb-installer.json b/ptero_eggs/minecraft/java/ftb/egg-ftb-installer.json new file mode 100644 index 0000000..fdd9e18 --- /dev/null +++ b/ptero_eggs/minecraft/java/ftb/egg-ftb-installer.json @@ -0,0 +1,83 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-11-06T06:47:00+00:00", + "name": "FTB Server", + "author": "runemaster580@gmail.com", + "description": "FTB modpacks are now distributed through their own API. This egg was developed for support for modpacks that are distributed through this.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "Java 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 22": "ghcr.io\/ptero-eggs\/yolks:java_22", + "Java 23": "ghcr.io\/ptero-eggs\/yolks:java_23", + "Java 24": "ghcr.io\/ptero-eggs\/yolks:java_24" + }, + "file_denylist": [], + "startup": "java $( [[ -f log4jfix\/Log4jPatcher.jar ]] && printf %s \"-javaagent:log4jfix\/Log4jPatcher.jar \" ) -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s \"-jar start-server.jar\" || printf %s \"@unix_args.txt\" )", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# FTB Pack Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir -p \/mnt\/server\r\nfi\r\ncd \/mnt\/server || { echo \"Failed to change into server directory\"; exit 1; }\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}\" ] && [ -n \"${FTB_SEARCH_TERM}\" ]; then\r\n encoded_search_term=$(urlencode \"$FTB_SEARCH_TERM\")\r\n JSON_DATA=$(curl -sSL https:\/\/api.feed-the-beast.com\/v1\/modpacks\/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}\" ] && [ -n \"${FTB_VERSION_STRING}\" ]; then\r\n # grabs the correct version id matching the string.\r\n FTB_MODPACK_VERSION_ID=$(curl -sSL https:\/\/api.feed-the-beast.com\/v1\/modpacks\/public\/modpack\/\"${FTB_MODPACK_ID}\" | jq -r --arg VSTRING \"${FTB_VERSION_STRING}\" '.versions[] | select(.name == $VSTRING) | .id')\r\n fi\r\n}\r\n\r\nfunction run_installer {\r\n # get architecture for installer\r\n INSTALLER_TYPE=$([ \"$(uname -m)\" == \"x86_64\" ] && echo \"linux\" || echo \"arm\/linux\")\r\n echo \"ModpackID: ${FTB_MODPACK_ID} VersionID: ${FTB_MODPACK_VERSION_ID:-latest} InstallerType: ${INSTALLER_TYPE}\"\r\n\r\n # download installer\r\n curl -Ls https:\/\/api.feed-the-beast.com\/v1\/modpacks\/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 -rf libraries\/net\/neoforged\/neoforge\r\n rm -f unix_args.txt\r\n \r\n # Remove old log4jpatcher\r\n rm -rf log4jfix\/\r\n \r\n # run installer\r\n # shellcheck disable=SC2046\r\n .\/serversetup -pack \"${FTB_MODPACK_ID}\" $([ -n \"$FTB_MODPACK_VERSION_ID\" ] && echo \"-version $FTB_MODPACK_VERSION_ID\") -no-colours -no-java -auto -force || { echo \"Failed to run FTB Installer\"; exit 1; }\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 if compgen -G \"libraries\/net\/neoforged\/neoforge\/*\/unix_args.txt\"; then\r\n ln -sf libraries\/net\/neoforged\/neoforge\/*\/unix_args.txt unix_args.txt\r\n fi\r\n \r\n # Create symlink for log4jpatcher that is sometimes included\r\n if compgen -G \"log4jfix\/Log4jPatcher-*.jar\"; then\r\n ln -sf log4jfix\/Log4jPatcher-*.jar log4jfix\/Log4jPatcher.jar\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\"", + "container": "eclipse-temurin:8-jdk-jammy", + "entrypoint": "bash" + } + }, + "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.feed-the-beast.com\/v1\/modpacks\/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.feed-the-beast.com\/v1\/modpacks\/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\nLeave this and FTB Pack Version empty to install latest.\r\n\r\nExample FTB Revelations version id for version \"2.0.2\" is 86.\r\nwhich would come out as: https:\/\/api.feed-the-beast.com\/v1\/modpacks\/public\/modpack\/5\/86", + "env_variable": "FTB_MODPACK_VERSION_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|integer", + "field_type": "text" + } + ] +} diff --git a/ptero_eggs/minecraft/java/glowstone/README.md b/ptero_eggs/minecraft/java/glowstone/README.md new file mode 100644 index 0000000..feae6c7 --- /dev/null +++ b/ptero_eggs/minecraft/java/glowstone/README.md @@ -0,0 +1,9 @@ +## Glowstone +Glowstone is an open-source replacement for CraftBukkit, Spigot, and Paper. + +## Ports +Similar to CraftBukkit and it's derivatives, it only requires a single port. Other plugins may require more ports. + +| Port | default | +|-------|---------| +| Game | 25565 | \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/glowstone/egg-glowstone.json b/ptero_eggs/minecraft/java/glowstone/egg-glowstone.json new file mode 100644 index 0000000..1787c26 --- /dev/null +++ b/ptero_eggs/minecraft/java/glowstone/egg-glowstone.json @@ -0,0 +1,97 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-12-24T13:33:48+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 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22" + }, + "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}", + "startup": "{\r\n \"done\": \"Ready for connections.\"\r\n}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "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&name=glowstone&sort=version&repository=snapshots&maven.baseVersion=${VERSION}&direction=desc&maven.classifier=\"\r\nelse \r\n echo -e \"Using GitHub.\"\r\n\r\n if [ -z \"${GITHUB_USER}\" ] && [ -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\"", + "container": "eclipse-temurin:8-jdk", + "entrypoint": "bash" + } + }, + "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/ptero_eggs/minecraft/java/krypton/README.md b/ptero_eggs/minecraft/java/krypton/README.md new file mode 100644 index 0000000..f45dd55 --- /dev/null +++ b/ptero_eggs/minecraft/java/krypton/README.md @@ -0,0 +1,17 @@ +# Krypton + +A fast, lightweight Minecraft server written in Kotlin + +[Krypton GitHub](https://github.com/KryptonMC/Krypton) + +## Server Ports + +Krypton only requires a single port to run, just like vanilla, though plugins may need extra ports. + +## Notes + +Please note that the server will not function correctly unless a pre-generated world is provided. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/krypton/config.conf b/ptero_eggs/minecraft/java/krypton/config.conf new file mode 100644 index 0000000..8fa9a59 --- /dev/null +++ b/ptero_eggs/minecraft/java/krypton/config.conf @@ -0,0 +1,92 @@ +# This is the main Krypton configuration file. All settings in this file apply globally +# across the entire server, regardless of what they are. +# +# If you need any help with any of the settings in this file, you can join us on Discord +# at https://discord.gg/4QuwYACDRX + +# Advanced settings. Don't touch these unless you know what you're doing. +advanced { + # Whether to attempt to register the server as a JMX bean. + enable-jmx-monitoring=true + # Whether we should use the DSYNC option for saving region files to disk. + synchronize-chunk-writes=true +} +# Other settings that don't quite fit in anywhere else. +other { + # If we should enable bStats metrics for the server + metrics=true + # The duration (in seconds) a single tick must take before the single tick profiler reports it. + save-threshold=5 +} +# Proxy IP forwarding settings. +proxy { + # + # The method to use for forwarding a connecting user's information on + # to Krypton from a proxy server. Supported values are: + # - NONE - Disable forwarding support completely + # - LEGACY - Use the BungeeCord/pre-1.13 method + # - MODERN - Use Velocity's modern forwarding protocol + # When any mode other than NONE is used, the server will be forced offline + # and will ONLY accept connections from proxies. No users will be able to + # direct connect. + mode=NONE + # The forwarding secret from Velocity. Only used in the MODERN forwarding protocol. + secret="" +} +# Settings for the GS4 query protocol listener. If you don't know what that means, don't touch these :) +query { + # Whether to enable the query protocol. + enabled=false + # The port the query listener should listen on. + port=25566 +} +# The main server settings. +server { + # The threshold at which packets larger will be compressed. Set to -1 to disable. + compression-threshold=256 + # The IP used by players to connect. 0.0.0.0 means listen on all interfaces. + ip="0.0.0.0" + # Whether the server authenticates users with Mojang. + online-mode=true + # The port used by players to connect. + port=25565 +} +# Status configuration +status { + # The upper limit of the player count. Any players that try to join when this is reached will be kicked. + max-players=20 + # The message of the day. Supports legacy and hex codes (using &#). + motd="ὀffKrypton is a Minecraft server written in Kotlin!" +} +# Watchdog settings. The watchdog monitors the server for freezes. +watchdog { + # The time (in milliseconds) before watchdog first warns you about the server not responding + early-warning-delay=10000 + # How often (in milliseconds) watchdog should warn you in advanced that the server isn't responding + early-warning-interval=5000 + # The message to send to players when we restart the server. Supports legacy and hex codes (&# format). + restart-message="&cServer closed." + # Whether we should attempt to restart the server if it crashes + restart-on-crash=true + # The script we should use to attempt to restart the server. + restart-script="./start.sh" + # The time (in seconds) that the server must not respond for before watchdog considers it dead. + timeout-time=60 +} +# Global world configuration options +world { + # The amount of time (in ticks) between automatic world saves. + autosave-interval=6000 + # The default difficulty. Valid values are: 0-3 (legacy), peaceful, easy, normal and hard (case insensitive). + difficulty=normal + # Forces the above gamemode for all players in all worlds. + force-default-gamemode=false + # The gamemode for this world. Valid values are: 0-3 (legacy), survival, creative, adventure and spectator (case insensitive). + gamemode=survival + # If this server is in hardcore mode. Currently does nothing. + hardcore=false + # The name of the folder with the world to load in it. + name=world + # The render distance of the server. This is how many chunks you can see in front of you, excluding the one you are in. + view-distance=10 +} diff --git a/ptero_eggs/minecraft/java/krypton/egg-krypton.json b/ptero_eggs/minecraft/java/krypton/egg-krypton.json new file mode 100644 index 0000000..75c0e29 --- /dev/null +++ b/ptero_eggs/minecraft/java/krypton/egg-krypton.json @@ -0,0 +1,61 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-12-24T13:31:40+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 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22" + }, + "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}", + "startup": "{\r\n \"done\": \")! Type \\\"help\\\" for help.\"\r\n}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "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\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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/ptero_eggs/minecraft/java/limbo/README.md b/ptero_eggs/minecraft/java/limbo/README.md new file mode 100644 index 0000000..bfc3c8c --- /dev/null +++ b/ptero_eggs/minecraft/java/limbo/README.md @@ -0,0 +1,13 @@ +# Limbo + +Standalone server program Limbo. + +[Limbo Github](https://github.com/LOOHP/Limbo) + +## Server Ports + +The Limbo server requires a single port for access (default 25565). + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/limbo/egg-limbo.json b/ptero_eggs/minecraft/java/limbo/egg-limbo.json new file mode 100644 index 0000000..484e0fe --- /dev/null +++ b/ptero_eggs/minecraft/java/limbo/egg-limbo.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-05-17T23:20:29+01:00", + "name": "Limbo", + "author": "xEfinax@protonmail.com", + "description": "Standalone server program Limbo.", + "features": null, + "docker_images": { + "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17" + }, + "file_denylist": [], + "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Limbo server listening on \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/ash\r\n# Limbo Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nmkdir -p \/mnt\/server\r\n\r\nLATEST_LIMBO_NAME=$(curl -s https:\/\/ci.loohpjames.com\/job\/Limbo\/lastSuccessfulBuild\/api\/json | jq -r .artifacts[1].displayPath)\r\n\r\ncd \/mnt\/server || exit\r\n\r\nif [ -f \"${SERVER_JARFILE}\" ]; then\r\n\tmv \"${SERVER_JARFILE}\" \"${SERVER_JARFILE}\".old\r\nfi\r\n\r\necho \"Downloading Limbo server jar...\"\r\ncurl -o \"${SERVER_JARFILE}\" https:\/\/ci.loohpjames.com\/job\/Limbo\/lastSuccessfulBuild\/artifact\/target\/$LATEST_LIMBO_NAME\r\n\r\nif [ ! -f server.properties ]; then\r\n echo \"Downloading Limbo server.properties\"\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/LOOHP\/Limbo\/master\/src\/main\/resources\/server.properties\r\nfi", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Server Jar File", + "description": "The name of the server jarfile to run the Limbo server with.", + "env_variable": "SERVER_JARFILE", + "default_value": "Limbo.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/magma/README.md b/ptero_eggs/minecraft/java/magma/README.md new file mode 100644 index 0000000..02a7ba5 --- /dev/null +++ b/ptero_eggs/minecraft/java/magma/README.md @@ -0,0 +1,17 @@ +# Magma + +Magma is most powerful Forge server providing you with Forge mods and Bukkit Plugins using Spigot and Paper for Performance Optimization and Stability. + +[Magma Website](https://magmafoundation.org/) + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | + +## Notes +Providing a Minecraft version of ``latest`` or an empty value will default to 1.18.2 as this is the latest version that Magma supports at this time. +There is no API to query to find the true latest supported version. \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/magma/egg-magma.json b/ptero_eggs/minecraft/java/magma/egg-magma.json new file mode 100644 index 0000000..c77386c --- /dev/null +++ b/ptero_eggs/minecraft/java/magma/egg-magma.json @@ -0,0 +1,71 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-04-20T21:46:27+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 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22" + }, + "file_denylist": [], + "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "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\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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/ptero_eggs/minecraft/java/modrinth/README.md b/ptero_eggs/minecraft/java/modrinth/README.md new file mode 100644 index 0000000..04580ec --- /dev/null +++ b/ptero_eggs/minecraft/java/modrinth/README.md @@ -0,0 +1,18 @@ +# Modrinth Generic + +## This is a generic egg for Modrinth modpacks + +You will need to give it a modpack project ID. The project ID for [Extreme Optimization!](https://modrinth.com/modpack/extreme-optimization!) is `1oIpaoJo` for example. +This can be found on the modpack page in the `Technical information` section in the left sidebar. + +You can also optionally specify a version ID. If you do not specify a version ID, the latest version will be used. The version ID for [Extreme Optimization!](https://modrinth.com/modpack/extreme-optimization!) version 1.12.2For2.0 is `SyMW2FDv` for example. This can be found on the modpack page by clicking the version number in the `Versions` section. + +The script will automatically setup of Forge, Fabric, or Quilt depending on the modpack. + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/modrinth/egg-modrinth-generic.json b/ptero_eggs/minecraft/java/modrinth/egg-modrinth-generic.json new file mode 100644 index 0000000..772f4f3 --- /dev/null +++ b/ptero_eggs/minecraft/java/modrinth/egg-modrinth-generic.json @@ -0,0 +1,61 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-12-24T13:33:33+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 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22" + }, + "file_denylist": [], + "startup": "java $([[ -f user_jvm_args.txt ]] && printf %s \"@user_jvm_args.txt\") -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $([[ ! -f unix_args.txt ]] && printf %s \"-jar `cat .serverjar`\" || printf %s \"@unix_args.txt\")", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# shellcheck disable=SC2155\r\n#\r\n# Modrinth Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n: \"${SERVER_DIR:=\/mnt\/server}\"\r\n: \"${PROJECT_ID:=}\"\r\n: \"${VERSION_ID:=}\"\r\n\r\nif [[ ! -d $SERVER_DIR ]]; then\r\n mkdir -p \"$SERVER_DIR\"\r\nfi\r\n\r\nif ! cd \"$SERVER_DIR\"; then\r\n echo -e \"Failed to change directory to ${SERVER_DIR}\"\r\n exit 1\r\nfi\r\n\r\nfunction install_required {\r\n echo -e \"Installing required packages...\"\r\n\r\n echo -e \"\\tRunning apt update\"\r\n if ! apt update > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: apt update failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tRunning apt install\"\r\n if ! apt install -y wget jq unzip dos2unix > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: apt install failed!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nMODRINTH_API_URL=\"https:\/\/api.modrinth.com\/v2\"\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving Modrinth project information...\"\r\n local PROJECT_DATA=$(wget -q \"${MODRINTH_API_URL}\/project\/${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.title \/\/ empty')\r\n local PROJECT_SUPPORTED=$(echo \"$PROJECT_DATA\" | jq -r '.\"server_side\" \/\/ empty')\r\n\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ \"${PROJECT_SUPPORTED}\" == \"unsupported\" ]]; then\r\n echo -e \"\\tWARNING: The project '${PROJECT_TITLE}' is listed as unsupported for server use. Continuing anyway...\"\r\n fi\r\n\r\n if [[ -z \"${VERSION_ID}\" || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo version ID specified, using latest version\"\r\n VERSION_ID=$(echo \"$PROJECT_DATA\" | jq -r '.versions[-1] \/\/ empty')\r\n else\r\n echo -e \"\\tChecking if provided version id '${VERSION_ID}' exists\"\r\n if [[ $(echo \"$PROJECT_DATA\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.versions[]? | select(. == $VERSION_ID)') != \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n fi\r\n\r\n if [[ -z \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: No version id found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${MODRINTH_API_URL}\/version\/${VERSION_ID}\" -O -)\r\n\r\n if [[ -z \"${JSON_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve version data for version id '${VERSION_ID}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tParsing Modrinth pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo \"$JSON_DATA\" | jq -r '.files[]? | select(.primary == true) | .url')\r\n\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n ## download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n if ! wget -q \"${DOWNLOAD_URL}\" -O server.zip; then\r\n echo -e \"\\tERROR: Failed to download modpack files!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nfunction unpack_zip {\r\n unzip -o server.zip\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n jq -c '.files[]? | select(.env.server == \"required\") | {name: .path, url: .downloads[0]}' \"${MANIFEST}\" | while read -r mod; do\r\n local FILE_URL=$(echo \"${mod}\" | jq -r '.url \/\/ empty')\r\n local FILE_NAME=$(echo \"${mod}\" | jq -r '.name \/\/ empty')\r\n\r\n if [[ -z \"${FILE_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for mod '${mod}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading ${FILE_URL}\"\r\n \r\n if ! wget -q \"${FILE_URL}\" -P \"${SERVER_DIR}\/mods\"; then\r\n echo -e \"\\tERROR: Failed to download mod '${FILE_NAME}'\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n echo -e \"\\tCopying shared overrides\"\r\n 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 > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: Failed to install Forge Server ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv \"$FORGE_JAR\" forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n local MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' \"${MANIFEST}\")\r\n local FABRIC_VERSION=$(jq -r '.dependencies.\"fabric-loader\" \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${FABRIC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer url found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O fabric-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar fabric-installer.jar server -mcversion \"${MC_VERSION}\" -loader \"${FABRIC_VERSION}\" -downloadMinecraft; then\r\n echo -e \"\\tERROR: Failed to install Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n local MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' \"${MANIFEST}\")\r\n local QUILT_VERSION=$(jq -r '.dependencies.\"quilt-loader\" \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${QUILT_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_JSON}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve Quilt installer information from manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer URL found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O quilt-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Quilt installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar quilt-installer.jar install server \"${MC_VERSION}\" \"${QUILT_VERSION}\" --download-server --install-dir=.\/; then\r\n echo -e \"\\tERROR: Failed to install Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ -z \"${PROJECT_ID}\" ]]; then\r\n echo \"ERROR: You must specify a PROJECT_ID environment variable!\"\r\n exit 1\r\nfi\r\n\r\nif [[ ! \"${PROJECT_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\n\tunpack_zip\r\nelse\r\n\tunpack_zip\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n echo \"Found modrinth.index.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n if [[ $(jq -r '.dependencies.forge' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"fabric-loader\"' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"quilt-loader\"' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"", + "container": "eclipse-temurin:17-jdk", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Modpack Project ID", + "description": "This is the modpack project ID from the Modrinth site.\r\n\r\nFor example, the project ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/' is 1KVo5zza", + "env_variable": "PROJECT_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:8", + "field_type": "text" + }, + { + "name": "Modpack Version ID", + "description": "This is the modpack version ID from the Modrinth site.\r\n\r\nFor example, the version ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/version\/4.7.4' is P9wA6exe", + "env_variable": "VERSION_ID", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:8", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/mohist/README.md b/ptero_eggs/minecraft/java/mohist/README.md new file mode 100644 index 0000000..76f44ea --- /dev/null +++ b/ptero_eggs/minecraft/java/mohist/README.md @@ -0,0 +1,23 @@ +# Mohist + +Mohist is a minecraft forge server software that implements the Paper/Spigot/Bukkit API. + +[Mohist Website](https://mohistmc.com/) + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | + +## Server Specific + +### Supported versions + +- 1.16.4 series build 132+ +- 1.12.x series +- 1.7.x series (discontinued) build 13+ + +Requires changing Minecraft_Version variable on each new Minecraft version release. diff --git a/ptero_eggs/minecraft/java/mohist/egg-mohist.json b/ptero_eggs/minecraft/java/mohist/egg-mohist.json new file mode 100644 index 0000000..ca99c3f --- /dev/null +++ b/ptero_eggs/minecraft/java/mohist/egg-mohist.json @@ -0,0 +1,91 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-12-24T13:31:49+00:00", + "name": "MohistMC", + "author": "alex.chang-lam@protonmail.com", + "description": "Spigot fork with performance optimizations.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "Java 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22" + }, + "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}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/ash\r\n# MohistMC Installation Script\r\n#\r\n# Server Files: \/mnt\/server\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:\/\/mohistmc.com\/api\/v2\/projects\/${PROJECT} | jq -r --arg version ${MC_VERSION} '.versions | index($version)'`\r\n\tLATEST_VERSION=`curl -s https:\/\/mohistmc.com\/api\/v2\/projects\/${PROJECT} | jq -r '.versions[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" != \"null\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MC_VERSION}\"\r\n\telse\r\n\t\techo -e \"Specified version not found. Defaulting to the latest ${PROJECT} version\"\r\n\t\tMC_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\r\n\tBUILD_EXISTS=`curl -s https:\/\/mohistmc.com\/api\/v2\/projects\/${PROJECT}\/${MC_VERSION}\/builds | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`\r\n\tLATEST_BUILD=`curl -s https:\/\/mohistmc.com\/api\/v2\/projects\/${PROJECT}\/${MC_VERSION}\/builds | jq -r '.builds[-1]' | jq -r '.number'`\r\n\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ] && [ \"${BUILD_EXISTS}\" != \"null\" ]; then\r\n\t\techo -e \"Build is valid for version ${MC_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MC_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\r\n\tJAR_NAME=${PROJECT}-${MC_VERSION}-${BUILD_NUMBER}.jar\r\n\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MC_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/mohistmc.com\/api\/v2\/projects\/${PROJECT}\/${MC_VERSION}\/builds\/${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}", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "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.20.1", + "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_NUMBER", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Project", + "description": "The type of version to download.", + "env_variable": "PROJECT", + "default_value": "mohist", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:mohist,banner", + "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" + } + ] +} \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/nanolimbo/README.md b/ptero_eggs/minecraft/java/nanolimbo/README.md new file mode 100644 index 0000000..4e8407c --- /dev/null +++ b/ptero_eggs/minecraft/java/nanolimbo/README.md @@ -0,0 +1,14 @@ +# NanoLimbo + +A lightweight minecraft limbo server, written on Java with Netty. The main goal of the project is maximum simplicity with a minimum number of sent and processed packets. 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. +No plugins, no logs. The server is fully clear. It only able keep a lot of players while the main server is down. + +[NanoLimbo Github](https://github.com/Nan1t/NanoLimbo) + +## Server Ports + +The nanolimbo server requires a single port for access (default 25565). + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/nanolimbo/egg-nano-limbo.json b/ptero_eggs/minecraft/java/nanolimbo/egg-nano-limbo.json new file mode 100644 index 0000000..a1b1560 --- /dev/null +++ b/ptero_eggs/minecraft/java/nanolimbo/egg-nano-limbo.json @@ -0,0 +1,66 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-04-02T11:14:22+02: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\/ptero-eggs\/yolks:java_8": "ghcr.io\/ptero-eggs\/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}", + "startup": "{\r\n \"done\": \"Server started on\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "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\/ptero-eggs\/game-eggs\/main\/minecraft\/java\/nanolimbo\/settings.yml\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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/ptero_eggs/minecraft/java/nanolimbo/settings.yml b/ptero_eggs/minecraft/java/nanolimbo/settings.yml new file mode 100644 index 0000000..dc997c7 --- /dev/null +++ b/ptero_eggs/minecraft/java/nanolimbo/settings.yml @@ -0,0 +1,115 @@ +# +# NanoLimbo configuration +# + +# Server's host address and port. Set ip empty to use public address +bind: + ip: 'localhost' + port: 65535 + +# Max amount of players can join to server +# Set -1 to make it infinite +maxPlayers: 100 + +# Server's data in servers list +ping: + description: '{"text": "&9NanoLimbo"}' + version: 'NanoLimbo' + +# Available dimensions: OVERWORLD, NETHER, THE_END +dimension: THE_END + +# Whether to display the player in the player list +# For 1.16.5 clients player list will be sent even if disabled, to avoid crash +playerList: + enable: false + username: 'NanoLimbo' + +# Whether to display header and footer in player list +headerAndFooter: + enable: false + header: '{"text": "&eWelcome!"}' + footer: '{"text": "&9NanoLimbo"}' + +# Spawn position in the world +spawnPosition: + x: 0.0 + y: 64.0 + z: 0.0 + yaw: 0.0 + pitch: 0.0 + +# Setup player's game mode +# 0 - Survival +# 1 - Creative (hide HP and food bar) +# 2 - Adventure +# 3 - Spectator (hide all UI bars) +gameMode: 3 + +# Server name which is shown under F3 +brandName: + enable: true + content: 'NanoLimbo' + +# Message sends when player join to server +joinMessage: + enable: true + text: '{"text": "&eWelcome to the Limbo!"}' + +# BossBar displays when player join to server +# Works on 1.9+ clients only +bossBar: + enable: true + text: '{"text": "Welcome to the Limbo!"}' + health: 1.0 + # Available colors: PINK, BLUE, RED, GREEN, YELLOW, PURPLE, WHITE + color: PINK + # Available divisions: SOLID, DASHES_6, DASHES_10, DASHES_12, DASHES_20 + division: SOLID + +# Display title and subtitle +title: + enable: true + # Set title text value empty, if you need only subtitle + title: '{"text": "&9&lWelcome!"}' + # Set subtitle text value empty, if you need only title + subtitle: '{"text": "&6NanoLimbo"}' + # Fade in time in ticks (1 sec = 20 ticks) + fadeIn: 10 + # Stay time in ticks + stay: 100 + # Fade out time in ticks + fadeOut: 10 + +# Player info forwarding support. +# Available types: +# - NONE +# - LEGACY +# - MODERN +# - BUNGEE_GUARD +# Don't use secret if you not use MODERN type +infoForwarding: + type: NONE + secret: '' + tokens: + - '' + +# Read timeout for connections in milliseconds +readTimeout: 30000 + +# Define log level. For production, I'd recommend to use level 2 +# Log levels: +# 0 - Display only errors +# 1 - Display errors, warnings +# 2 - Display errors, warnings, info +# 3 - Display errors, warnings, info, debug +debugLevel: 2 + +# Warning! Do not touch params of this block, if you not completely sure what is this! +netty: + # Use Linux native transport type, if it possible + useEpoll: true + # EventLoopGroup threads count + threads: + bossGroup: 1 + workerGroup: 4 \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/neoforge/README.md b/ptero_eggs/minecraft/java/neoforge/README.md new file mode 100644 index 0000000..461536f --- /dev/null +++ b/ptero_eggs/minecraft/java/neoforge/README.md @@ -0,0 +1,18 @@ +# NeoForge 🦊 + +## This is a generic egg for the NeoForge standalone server. + +NeoForge is a fork of Minecraft Forge for versions 1.20.1 or newer. The install +script is based on the official Forge install script. + +The egg supports downloading NeoForge for the latest or a specified Minecraft version, +as well as downloading a specific NeoForge version. + +## Server Ports + +The Minecraft server requires a single port for access (default 25565), +but plugins may require extra ports to enabled for the server. + +| Port | Default | +|------------|---------| +| Minecraft | 25565 | diff --git a/ptero_eggs/minecraft/java/neoforge/egg-neoforge.json b/ptero_eggs/minecraft/java/neoforge/egg-neoforge.json new file mode 100644 index 0000000..832a3ff --- /dev/null +++ b/ptero_eggs/minecraft/java/neoforge/egg-neoforge.json @@ -0,0 +1,58 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-10-28T17:57:19+01: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 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22" + }, + "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}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# NeoForge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napt-get update\r\napt-get install -y curl xq openjdk-17-jdk\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\nNEOFORGE_VERSION=\"$(echo \"$NEOFORGE_VERSION\" | tr -d ' ')\"\r\nMC_VERSION=\"$(echo \"$MC_VERSION\" | tr -d ' ')\"\r\n\r\n# If we have a specific NeoForge version set, use that\r\nif [[ ! -z ${NEOFORGE_VERSION} ]]; then\r\n if [[ \"${NEOFORGE_VERSION}\" =~ \"1.20.1-\" ]]; then\r\n ARTIFACT_NAME=\"forge\"\r\n else\r\n ARTIFACT_NAME=\"neoforge\"\r\n fi\r\n\r\n BASE_URL=\"https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/${ARTIFACT_NAME}\/${NEOFORGE_VERSION}\/\"\r\n echo \"Fetching file list from: ${BASE_URL}\"\r\n FILE_LIST=$(curl -s \"${BASE_URL}\" | grep -oP 'href=\"[^\"]+\"' | cut -d'\"' -f2)\r\n\r\n INSTALLER_JAR=$(echo \"$FILE_LIST\" | grep -E \"${ARTIFACT_NAME}-${NEOFORGE_VERSION}.*installer.*\\.jar$\" | head -n1)\r\n if [[ -z \"$INSTALLER_JAR\" ]]; then\r\n INSTALLER_JAR=$(echo \"$FILE_LIST\" | grep -E \"${ARTIFACT_NAME}-${NEOFORGE_VERSION}.*universal.*\\.jar$\" | head -n1)\r\n fi\r\n if [[ -z \"$INSTALLER_JAR\" ]]; then\r\n echo \"Could not find a valid JAR file for NeoForge version ${NEOFORGE_VERSION}.\"\r\n exit 1\r\n fi\r\n\r\n echo \"Downloading ${INSTALLER_JAR}...\"\r\n curl -o \"${INSTALLER_JAR}\" \"${BASE_URL}${INSTALLER_JAR}\"\r\nelse\r\n if [[ \"${MC_VERSION}\" == \"1.20.1\" ]]; then\r\n XML_DATA=$(curl -sSL https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/forge\/maven-metadata.xml)\r\n ARTIFACT_NAME=\"forge\"\r\n NEOFORGE_OLD=1\r\n else\r\n XML_DATA=$(curl -sSL https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/neoforge\/maven-metadata.xml)\r\n ARTIFACT_NAME=\"neoforge\"\r\n fi\r\n\r\n REPO_URL=\"https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/${ARTIFACT_NAME}\/\"\r\n\r\n if [[ \"${MC_VERSION}\" == \"latest\" ]] || [[ \"${MC_VERSION}\" == \"\" ]]; then\r\n echo \"Getting latest version of NeoForge.\"\r\n MC_VERSION=\"1.$(echo -e ${XML_DATA} | xq -x '\/metadata\/versioning\/release' | cut -d'.' -f1-2)\"\r\n fi\r\n\r\n echo \"Minecraft version: ${MC_VERSION}\"\r\n\r\n if [[ -z \"${NEOFORGE_OLD}\" ]]; then\r\n if [[ \"${MC_VERSION}\" == *.*.* ]]; then\r\n VERSION_KEY=\"$(echo -n ${MC_VERSION} | cut -d'.' -f2-).\"\r\n else\r\n VERSION_KEY=$(echo -n ${MC_VERSION} | cut -d'.' -f2-)\r\n fi\r\n else\r\n VERSION_KEY=\"${MC_VERSION}-\"\r\n fi\r\n\r\n NEOFORGE_VERSION=$(echo -e ${XML_DATA} | xq -x \"(\/metadata\/versioning\/versions\/*[starts-with(text(), '${VERSION_KEY}')])\" | tail -n1)\r\n if [[ -z \"${NEOFORGE_VERSION}\" ]]; then\r\n echo \"The install failed, because there is no valid version of NeoForge for Minecraft version ${MC_VERSION}.\"\r\n exit 1\r\n fi\r\n\r\n BASE_URL=\"${REPO_URL}${NEOFORGE_VERSION}\/\"\r\n echo \"Resolved NeoForge version: ${NEOFORGE_VERSION}\"\r\n FILE_LIST=$(curl -s \"${BASE_URL}\" | grep -oP 'href=\"[^\"]+\"' | cut -d'\"' -f2)\r\n\r\n INSTALLER_JAR=$(echo \"$FILE_LIST\" | grep -E \"${ARTIFACT_NAME}-${NEOFORGE_VERSION}.*installer.*\\.jar$\" | head -n1)\r\n if [[ -z \"$INSTALLER_JAR\" ]]; then\r\n INSTALLER_JAR=$(echo \"$FILE_LIST\" | grep -E \"${ARTIFACT_NAME}-${NEOFORGE_VERSION}.*universal.*\\.jar$\" | head -n1)\r\n fi\r\n if [[ -z \"$INSTALLER_JAR\" ]]; then\r\n echo \"Could not find a valid JAR file for NeoForge version ${NEOFORGE_VERSION}.\"\r\n exit 1\r\n fi\r\n\r\n echo \"Downloading ${INSTALLER_JAR}...\"\r\n curl -o \"${INSTALLER_JAR}\" \"${BASE_URL}${INSTALLER_JAR}\"\r\nfi\r\n\r\n# Clean previous install (for downgrade\/upgrade support)\r\nrm -rf libraries\/net\/neoforged\/${ARTIFACT_NAME}\r\n\r\n# Run the installer to generate startup arguments\r\necho \"Running installer...\"\r\njava -jar \"${INSTALLER_JAR}\" --installServer\r\n\r\n# Symlink unix_args.txt if it exists\r\nif [[ -f \"libraries\/net\/neoforged\/${ARTIFACT_NAME}\/${NEOFORGE_VERSION}\/unix_args.txt\" ]]; then\r\n ln -sf \"libraries\/net\/neoforged\/${ARTIFACT_NAME}\/${NEOFORGE_VERSION}\/unix_args.txt\" unix_args.txt\r\nfi\r\n\r\nif [[ ! -f unix_args.txt ]]; then\r\n echo \"Installer did not generate unix_args.txt. Installation failed.\"\r\n exit 1\r\nfi\r\n\r\n# Removal of unnecessary files\r\nrm run.bat\r\nrm run.sh\r\n\r\necho \"Installation complete.\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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 \r\nhttps:\/\/projects.neoforged.net\/neoforged\/neoforge\r\n\r\nIf 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-9A-Za-z.\\-\\+]+$\/", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/paper/README.md b/ptero_eggs/minecraft/java/paper/README.md new file mode 100644 index 0000000..0b39fd4 --- /dev/null +++ b/ptero_eggs/minecraft/java/paper/README.md @@ -0,0 +1,13 @@ +# Paper + +Paper is the next generation of Minecraft server, compatible with Spigot plugins and offering uncompromising performance. + +Check out the [Paper Website](https://papermc.io/) for more information. + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/paper/egg-paper.json b/ptero_eggs/minecraft/java/paper/egg-paper.json new file mode 100644 index 0000000..fb6355e --- /dev/null +++ b/ptero_eggs/minecraft/java/paper/egg-paper.json @@ -0,0 +1,82 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2026-03-27T14:32:59+01: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 25": "ghcr.io\/ptero-eggs\/yolks:java_25", + "Java 22": "ghcr.io\/ptero-eggs\/yolks:java_22", + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/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 \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/ash\r\n# Paper Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=paper\r\nUSER_AGENT=\"Pterodactyl (https:\/\/Pterodactyl.io)\"\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 --user-agent \"${USER_AGENT}\" -s https:\/\/fill.papermc.io\/v3\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions | any(.[]; index($VERSION))' | grep -m1 true`\r\n\tLATEST_VERSION=`curl --user-agent \"${USER_AGENT}\" -s https:\/\/fill.papermc.io\/v3\/projects\/${PROJECT} | jq -r '.versions | to_entries | .[0].value[0]'`\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 --user-agent \"${USER_AGENT}\" -s https:\/\/fill.papermc.io\/v3\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`\r\n\tLATEST_BUILD=`curl --user-agent \"${USER_AGENT}\" -s https:\/\/fill.papermc.io\/v3\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[0]'`\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\techo \"Version being downloaded\"\r\n\techo -e \"Project: ${PROJECT}\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\tDOWNLOAD_URL=`curl --user-agent \"${USER_AGENT}\" -s https:\/\/fill.papermc.io\/v3\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER} | jq -r '.downloads.\"server:default\".url'`\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl --user-agent \\\"${USER_AGENT}\\\" -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 --user-agent \"${USER_AGENT}\" -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f server.properties ]; then\r\n echo -e \"Downloading MC server.properties\"\r\n curl --user-agent \"${USER_AGENT}\" -o server.properties https:\/\/raw.githubusercontent.com\/pterodactyl\/game-eggs\/main\/minecraft\/java\/server.properties\r\nfi", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Minecraft Version", + "description": "The version of minecraft to download. \r\n\r\nLeave at latest to always get the latest version. Invalid versions will default to latest.", + "env_variable": "MINECRAFT_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Server Jar File", + "description": "The name of the server jarfile to run the server with.", + "env_variable": "SERVER_JARFILE", + "default_value": "server.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/", + "field_type": "text" + }, + { + "name": "Download Path", + "description": "A URL to use to download a server.jar rather than the ones in the install script. This is not user viewable.", + "env_variable": "DL_PATH", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Build Number", + "description": "The build number for the 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/ptero_eggs/minecraft/java/purpur/README.md b/ptero_eggs/minecraft/java/purpur/README.md new file mode 100644 index 0000000..9273550 --- /dev/null +++ b/ptero_eggs/minecraft/java/purpur/README.md @@ -0,0 +1,14 @@ +# Purpur + +Purpur is a drop-in replacement for Paper servers designed for configurability, and new fun and exciting gameplay features. + +[Purpur GitHub](https://github.com/PurpurMC/Purpur) +[Purpur Website](https://purpurmc.org/) + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/purpur/egg-purpur.json b/ptero_eggs/minecraft/java/purpur/egg-purpur.json new file mode 100644 index 0000000..93d1d3c --- /dev/null +++ b/ptero_eggs/minecraft/java/purpur/egg-purpur.json @@ -0,0 +1,72 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2026-03-27T14:40:52+01:00", + "name": "Purpur", + "author": "purpur@birdflop.com", + "description": "A drop-in replacement for Paper servers designed for configurability, and new fun and exciting gameplay features.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "Java 25": "ghcr.io\/ptero-eggs\/yolks:java_25", + "Java 22": "ghcr.io\/ptero-eggs\/yolks:java_22", + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/yolks:java_8" + }, + "file_denylist": [], + "startup": "java --add-modules=jdk.incubator.vector -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "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\/ptero-eggs\/game-eggs\/main\/minecraft\/java\/server.properties\r\nfi", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Minecraft Version", + "description": "The version of Minecraft to download. \r\n\r\nLeave at latest to always get the latest version. Invalid versions will default to latest.", + "env_variable": "MINECRAFT_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "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/ptero_eggs/minecraft/java/quilt/README.md b/ptero_eggs/minecraft/java/quilt/README.md new file mode 100644 index 0000000..0655096 --- /dev/null +++ b/ptero_eggs/minecraft/java/quilt/README.md @@ -0,0 +1,29 @@ +# Quilt + +## From their [Website](https://quiltmc.org/) + +## [Documentation](https://quiltmc.org/en/install/server/) + +The Quilt project is an open-source, community-driven modding toolchain designed primarily for Minecraft. By focusing on speed, ease of use and modularity, Quilt aims to provide a sleek and modern modding toolchain with an open ecosystem. + +## Installation/System Requirements + +| | Bare Minimum | Recommended | +|---------|---------|---------| +| Processor | Minecraft probably supports everything? | - | +| RAM | 2GB | 5GB | +| Storage | 300MB | 10GB | +| Network | 3 Mbit/s | 7 Mbit/s | +| Game Ownership | The game is not required to run the server. | - | + +## Server Ports + +Ports required to run the server in a table format. + +| Port | default | +|---------|---------| +| Game | 25565 | + +### Notes + +25565 is the default port, but any port can be used. \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/quilt/egg-quilt.json b/ptero_eggs/minecraft/java/quilt/egg-quilt.json new file mode 100644 index 0000000..fddaec3 --- /dev/null +++ b/ptero_eggs/minecraft/java/quilt/egg-quilt.json @@ -0,0 +1,57 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-04-20T21:46:27+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 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22" + }, + "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 \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Quilt Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y wget\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nwget -O quilt.jar https:\/\/quiltmc.org\/api\/v1\/download-latest-installer\/java-universal\r\njava -jar quilt.jar \\\r\n install server $MC_VERSION \\\r\n --download-server\r\ncd \/mnt\/server\/server\r\nmv * \/mnt\/server\r\ncd ..\r\nrm quilt.jar\r\nrmdir \/mnt\/server\/server\r\nmv server.jar minecraft.jar\r\nmv quilt-server-launch.jar server.jar\r\necho \"serverJar=minecraft.jar\" > quilt-server-launcher.properties\r\necho -e \"Server is Ready!\"", + "container": "eclipse-temurin:18-jdk-jammy", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Minecraft Version", + "description": "Version of Minecraft that will be installed. You can only choose the exact version number, for example \"1.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/ptero_eggs/minecraft/java/server.properties b/ptero_eggs/minecraft/java/server.properties new file mode 100644 index 0000000..00313ae --- /dev/null +++ b/ptero_eggs/minecraft/java/server.properties @@ -0,0 +1,3 @@ +#Minecraft server properties +server-port=25565 +server-ip= diff --git a/ptero_eggs/minecraft/java/spigot/README.md b/ptero_eggs/minecraft/java/spigot/README.md new file mode 100644 index 0000000..9910d5f --- /dev/null +++ b/ptero_eggs/minecraft/java/spigot/README.md @@ -0,0 +1,21 @@ +# Spigot + +A high performance Minecraft server implementation + +[Spigot Website](https://www.spigotmc.org/) + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | + +## Server Specific + +Spigot was hit with a DMCA and now requires that it be built by the user. + +### This egg will build spigot for you + +You can also supply a download link to a server jar if you want. diff --git a/ptero_eggs/minecraft/java/spigot/egg-spigot.json b/ptero_eggs/minecraft/java/spigot/egg-spigot.json new file mode 100644 index 0000000..6f52d82 --- /dev/null +++ b/ptero_eggs/minecraft/java/spigot/egg-spigot.json @@ -0,0 +1,71 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-01-12T08:12:41+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 8": "ghcr.io/ptero-eggs/yolks:java_8", + "Java 11": "ghcr.io/ptero-eggs/yolks:java_11", + "Java 16": "ghcr.io/ptero-eggs/yolks:java_16", + "Java 17": "ghcr.io/ptero-eggs/yolks:java_17", + "java 21": "ghcr.io/ptero-eggs/yolks:java_21", + "java 22": "ghcr.io/ptero-eggs/yolks:java_22" + }, + "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}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "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\" ]] && echo \"x64\" || echo \"aarch64\")\r\n \r\nfunction install_java() {\r\n echo \"ARCH: ${ARCH}\"\r\n echo \"Download 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\r\n## Only download if a path is provided, otherwise continue.\r\nif [ -n \"${DL_PATH}\" ]; then\r\n cd /mnt/server || { echo \"Failed to change directory\"; exit 1;}\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 # Fetch the java version info from the spigotmc API\r\n if [ -z \"$DL_VERSION\" ] || [ \"$DL_VERSION\" == \"latest\" ]; then\r\n DL_VERSION=\"latest\"\r\n SPIGOT_VERSION_JSON=$(curl --fail -s https://hub.spigotmc.org/versions/latest.json)\r\n else\r\n # Get requested version \r\n if ! SPIGOT_VERSION_JSON=$(curl --fail -s https://hub.spigotmc.org/versions/${DL_VERSION}.json) ; then\r\n # Default to latest\r\n echo \"Invalid version requested... defaulting to latest.\"\r\n DL_VERSION=\"latest\"\r\n SPIGOT_VERSION_JSON=$(curl --fail -s https://hub.spigotmc.org/versions/${DL_VERSION}.json)\r\n fi\r\n fi\r\n JAVA_VERSION_INDEX_MIN=$(echo \"$SPIGOT_VERSION_JSON\" | jq -r '.javaVersions[0]')\r\n JAVA_VERSION_INDEX_MAX=$(echo \"$SPIGOT_VERSION_JSON\" | jq -r '.javaVersions[1]')\r\n\r\n\r\n # Spigot version table - https://hub.spigotmc.org/stash/projects/SPIGOT/repos/buildtools/browse/src/main/java/org/spigotmc/builder/JavaVersion.java\r\n # Install the minimum supported java version\r\n if [ 52 -ge \"$JAVA_VERSION_INDEX_MIN\" ] && [ 52 -le \"$JAVA_VERSION_INDEX_MAX\" ]; then\r\n install_java \"https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_${ARCH}_linux_hotspot_8u312b07.tar.gz\" jdk8u312-b07\r\n elif [ 60 -ge \"$JAVA_VERSION_INDEX_MIN\" ] && [ 60 -le \"$JAVA_VERSION_INDEX_MAX\" ]; then\r\n install_java \"https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_${ARCH}_linux_hotspot_16.0.2_7.tar.gz\" jdk-16.0.2+7\r\n elif [ 61 -ge \"$JAVA_VERSION_INDEX_MIN\" ] && [ 61 -le \"$JAVA_VERSION_INDEX_MAX\" ]; then\r\n install_java \"https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_${ARCH}_linux_hotspot_17.0.1_12.tar.gz\" jdk-17.0.1+12\r\n elif [ 65 -ge \"$JAVA_VERSION_INDEX_MIN\" ] && [ 65 -le \"$JAVA_VERSION_INDEX_MAX\" ]; then\r\n install_java \"https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.3%2B9/OpenJDK21U-jdk_${ARCH}_linux_hotspot_21.0.3_9.tar.gz\" jdk-21.0.3+9\r\n elif [ 67 -ge \"$JAVA_VERSION_INDEX_MIN\" ] && [ 67 -le \"$JAVA_VERSION_INDEX_MAX\" ]; then\r\n install_java \"https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_${ARCH}_linux_hotspot_23.0.1_11.tar.gz\" jdk-23.0.1+11\r\n else\r\n echo \"Unsupported Java version required\"\r\n exit 1\r\n fi\r\n\r\n mkdir -p /srv/\r\n cd /srv/ || { echo \"Failed to change directory\"; exit 1;}\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 fi\r\n build_spigot \"${SERVER_MEMORY}\"\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 \"-----------------------------------------\"", + "container": "ghcr.io/ptero-eggs/installers:debian", + "entrypoint": "bash" + } + }, + "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 {{DL_VERSION}} 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" + } + ] +} diff --git a/ptero_eggs/minecraft/java/spongeforge/README.md b/ptero_eggs/minecraft/java/spongeforge/README.md new file mode 100644 index 0000000..82e65f4 --- /dev/null +++ b/ptero_eggs/minecraft/java/spongeforge/README.md @@ -0,0 +1,19 @@ +# SpongeForge + +SpongeForge is the implementation of the Sponge API on the Minecraft Forge platform. + +[SpongePowered Website](https://www.spongepowered.org/) + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | + +### Author & Contributers +| Name | Github Profile | Buy me a Coffee | +| ------------- |-------------|-------------| +| Red-Banana-Official | https://github.com/Red-Banana-Official | / | +| Parkervcp | https://github.com/parkervcp | / | diff --git a/ptero_eggs/minecraft/java/spongeforge/egg-sponge-forge.json b/ptero_eggs/minecraft/java/spongeforge/egg-sponge-forge.json new file mode 100644 index 0000000..d7e00af --- /dev/null +++ b/ptero_eggs/minecraft/java/spongeforge/egg-sponge-forge.json @@ -0,0 +1,61 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-11-06T06:47:00+00:00", + "name": "SpongeForge", + "author": "ptero@redbananaofficial.com", + "description": "A community-driven open source Minecraft: Java Edition modding platform.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "Java 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s \"-jar {{SERVER_JARFILE}}\" || printf %s \"@unix_args.txt\" )", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "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\nmkdir -p \/mnt\/server\/mods\r\ncd \/mnt\/server\r\n\r\n# Create spongeForge download URL using SF_MC_VERSION variable\r\nif [[ \"${SF_MC_VERSION}\" == *-* ]]; then\r\n echo -e \"Using specific SpongeForge version: ${SF_MC_VERSION}\"\r\n SF_VERSION=${SF_MC_VERSION}\r\nelse\r\n echo -e \"Fetching recommended SpongeForge version for Minecraft ${SF_MC_VERSION}\"\r\n API_URL=\"https:\/\/dl-api-new.spongepowered.org\/api\/v2\/groups\/org.spongepowered\/artifacts\/spongeforge\/latest?tags=minecraft:${SF_MC_VERSION}&recommended=true\"\r\n SF_VERSION=$(curl -s ${API_URL} | jq -r '.coordinates.version \/\/ empty') || true\r\n if [[ -z \"${SF_VERSION}\" ]]; then\r\n echo -e \"Attempting to fetch latest SpongeForge version for Minecraft ${SF_MC_VERSION}\"\r\n API_URL=\"https:\/\/dl-api-new.spongepowered.org\/api\/v2\/groups\/org.spongepowered\/artifacts\/spongeforge\/latest?tags=minecraft:${SF_MC_VERSION}&recommended=false\"\r\n SF_VERSION=$(curl -s ${API_URL} | jq -r '.coordinates.version \/\/ empty') || true\r\n fi\r\n if [[ -z \"${SF_VERSION}\" ]]; then\r\n echo -e \"Error: Failed to retrieve SpongeForge version for Minecraft ${SF_MC_VERSION}\"\r\n exit 1\r\n fi\r\n echo -e \"Found SpongeForge version: ${SF_VERSION}\"\r\nfi\r\n\r\n# Handle older versions legacy-transfer\r\nMC_VERSION=${SF_VERSION%%-*}\r\nSF_BASE_URL=\"https:\/\/repo.spongepowered.org\/repository\/maven-releases\"\r\nif [[ \"${MC_VERSION}\" == \"1.12.2\" || $(printf '%s\\n' \"$MC_VERSION\" \"1.12\" | sort -V | head -n1) == \"$MC_VERSION\" ]]; then\r\n SF_BASE_URL=\"https:\/\/repo.spongepowered.org\/repository\/legacy-transfer\"\r\nfi\r\n\r\n# Download SpongeForge\r\nif [[ $(printf '%s\\n' \"$MC_VERSION\" \"1.16.5\" | sort -V | tail -n1) == \"$MC_VERSION\" || \"${MC_VERSION}\" == \"1.21.4\" ]]; then\r\n SF_DL_LINK=\"${SF_BASE_URL}\/org\/spongepowered\/spongeforge\/${SF_VERSION}\/spongeforge-${SF_VERSION}-universal.jar\"\r\nelse\r\n SF_DL_LINK=\"${SF_BASE_URL}\/org\/spongepowered\/spongeforge\/${SF_VERSION}\/spongeforge-${SF_VERSION}.jar\"\r\nfi\r\n\r\necho -e \"Downloading SpongeForge: ${SF_DL_LINK}\"\r\ncurl -L --retry 5 --retry-delay 5 -o \/mnt\/server\/mods\/spongeforge-${SF_VERSION}.jar ${SF_DL_LINK} || {\r\n echo -e \"Error: SpongeForge download failed. Attempted URL: ${SF_DL_LINK}\"\r\n exit 1\r\n}\r\n\r\n# Forge version mappings for older versions\r\ndeclare -A FORGE_VERSIONS=(\r\n [\"1.12.2\"]=\"14.23.5.2838\"\r\n [\"1.12.1\"]=\"14.22.1.2480\"\r\n [\"1.11.2\"]=\"13.20.1.2476\"\r\n [\"1.10.2\"]=\"12.18.3.2477\"\r\n [\"1.9.4\"]=\"12.17.0.1968\"\r\n [\"1.8.9\"]=\"11.15.1.1890-1.8.9\"\r\n)\r\n\r\n# Determine Forge version\r\nif [[ -n \"${FORGE_VERSIONS[${MC_VERSION}]}\" ]]; then\r\n FORGE_VERSION=${FORGE_VERSIONS[${MC_VERSION}]}\r\nelse\r\n IFS='-' read -ra VERSION_PARTS <<< \"$SF_VERSION\"\r\n FORGE_VERSION=${VERSION_PARTS[1]:-${VERSION_PARTS[2]}}\r\nfi\r\n\r\n# Use unix_args.txt for versions 1.17 and above\r\nif printf '%s\\n' \"$MC_VERSION\" \"1.17\" | sort -V | tail -n1 | grep -q \"$MC_VERSION\"; then\r\n echo -e \"Using unix_args.txt for versions 1.17 and above.\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/${MC_VERSION}-${FORGE_VERSION}\/unix_args.txt unix_args.txt\r\nfi\r\n\r\n# Download Forge\r\necho -e \"Downloading Forge for Minecraft ${MC_VERSION}\"\r\nFORGE_DL_LINK=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/${MC_VERSION}-${FORGE_VERSION}\/forge-${MC_VERSION}-${FORGE_VERSION}-installer.jar\"\r\n\r\necho -e \"Forge download URL: ${FORGE_DL_LINK}\"\r\ncurl -L --retry 5 --retry-delay 5 -o installer.jar ${FORGE_DL_LINK} || {\r\n echo -e \"Error: Failed to download Forge installer. URL attempted: ${FORGE_DL_LINK}\"\r\n exit 1\r\n}\r\n\r\n# Run installer\r\nif ! java -jar installer.jar --installServer; then\r\n echo -e \"Error: Invalid or corrupt Forge installer. URL: ${FORGE_DL_LINK}\"\r\n exit 1\r\nfi\r\nrm installer.jar\r\n\r\n# Locate universal jar\r\nSERVER_JAR_PATH=$(find . -type f -name \"forge-*-universal.jar\" | head -n 1)\r\nif [[ -f \"$SERVER_JAR_PATH\" ]]; then\r\n echo -e \"Found Forge universal JAR: $SERVER_JAR_PATH\"\r\n cp \"$SERVER_JAR_PATH\" server.jar\r\n cp \"$SERVER_JAR_PATH\" \"${SERVER_JAR_PATH}.backup\"\r\nelse\r\n echo -e \"Error: Universal Forge JAR not found. Installation failed.\"\r\n exit 1\r\nfi\r\n\r\necho -e \"SpongeForge installation complete.\"", + "container": "eclipse-temurin:8-jdk-jammy", + "entrypoint": "bash" + } + }, + "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 Minecraft Version", + "description": "Either use a full version such as: 1.20.6-50.0.22-11.0.0-RC1633 to fetch an exact version\r\nOr just use the Minecraft version such as: 1.20.6, 1.19.4, etc. to get the recommended version\r\nSupported versions can be found here: https:\/\/spongepowered.org\/downloads\/spongeforge", + "env_variable": "SF_MC_VERSION", + "default_value": "1.20.6", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:30", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/spongevanilla/README.md b/ptero_eggs/minecraft/java/spongevanilla/README.md new file mode 100644 index 0000000..33383c5 --- /dev/null +++ b/ptero_eggs/minecraft/java/spongevanilla/README.md @@ -0,0 +1,13 @@ +# SpongeVanilla + +A community-driven open source Minecraft: Java Edition modding platform. + +[SpongePowered Website](https://www.spongepowered.org/) + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/spongevanilla/egg-sponge-vanilla.json b/ptero_eggs/minecraft/java/spongevanilla/egg-sponge-vanilla.json new file mode 100644 index 0000000..e0c1f4e --- /dev/null +++ b/ptero_eggs/minecraft/java/spongevanilla/egg-sponge-vanilla.json @@ -0,0 +1,61 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-12-24T13:33:52+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 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22" + }, + "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}", + "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "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} ] && [ $(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\/ptero-eggs\/game-eggs\/main\/minecraft\/java\/server.properties\r\nfi\r\n\r\necho -e \"Install for spongevanilla is complete\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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/ptero_eggs/minecraft/java/technic/README.md b/ptero_eggs/minecraft/java/technic/README.md new file mode 100644 index 0000000..8adb1fd --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/README.md @@ -0,0 +1,13 @@ +# Technic Eggs + +[Technic](/minecraft/java/technic/) + +* [Attack of the B-Team](/minecraft/java/technic/attack-of-the-bteam/) +* [Blightfall](/minecraft/java/technic/blightfall/) +* [Hexxit](/minecraft/java/technic/hexxit/) +* [Tekkit](/minecraft/java/technic/Tekkit/) +* [Tekkit 2](/minecraft/java/technic/Tekkit-2/) +* [Tekkit Classic](/minecraft/java/technic/tekkit-classic/) +* [Tekkit Legends](/minecraft/java/technic/tekkit-legends/) +* [The 1.7.10 Pack](/minecraft/java/technic/the-1-7-10-pack/) +* [The 1.12.2 Pack](/minecraft/java/technic/the-1-12-2-pack/) diff --git a/ptero_eggs/minecraft/java/technic/Tekkit-2/README.md b/ptero_eggs/minecraft/java/technic/Tekkit-2/README.md new file mode 100644 index 0000000..f45969a --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/Tekkit-2/README.md @@ -0,0 +1,9 @@ +# Minecraft: Tekkit 2 + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/technic/Tekkit-2/egg-tekkit2.json b/ptero_eggs/minecraft/java/technic/Tekkit-2/egg-tekkit2.json new file mode 100644 index 0000000..4ba1b1b --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/Tekkit-2/egg-tekkit2.json @@ -0,0 +1,45 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-12-24T13:57:40+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": { + "Java 8": "ghcr.io\/ptero-eggs\/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}", + "startup": "{\r\n \"done\": \"Server tick complete! \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "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\/ptero-eggs\/game-eggs\/main\/minecraft\/java\/server.properties\r\nfi\r\n\r\necho \"done\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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/ptero_eggs/minecraft/java/technic/Tekkit/README.md b/ptero_eggs/minecraft/java/technic/Tekkit/README.md new file mode 100644 index 0000000..a691367 --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/Tekkit/README.md @@ -0,0 +1,9 @@ +# Minecraft: Tekkit + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/technic/Tekkit/egg-tekkit.json b/ptero_eggs/minecraft/java/technic/Tekkit/egg-tekkit.json new file mode 100644 index 0000000..e334c00 --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/Tekkit/egg-tekkit.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-11-14T17:57:27+02: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, \u201cmeat\u201d 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": { + "Java 8": "ghcr.io\/ptero-eggs\/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}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "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\/ptero-eggs\/game-eggs\/main\/minecraft\/java\/server.properties\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "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/ptero_eggs/minecraft/java/technic/attack-of-the-bteam/README.md b/ptero_eggs/minecraft/java/technic/attack-of-the-bteam/README.md new file mode 100644 index 0000000..f5bc5be --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/attack-of-the-bteam/README.md @@ -0,0 +1,11 @@ +# Minecraft: Attack of the B Team + +A very good modpack! + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/technic/attack-of-the-bteam/egg-attack-of-the-b--team.json b/ptero_eggs/minecraft/java/technic/attack-of-the-bteam/egg-attack-of-the-b--team.json new file mode 100644 index 0000000..d254423 --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/attack-of-the-bteam/egg-attack-of-the-b--team.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "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/ptero-eggs/yolks:java_8": "ghcr.io/ptero-eggs/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/ptero-eggs/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/ptero_eggs/minecraft/java/technic/blightfall/README.md b/ptero_eggs/minecraft/java/technic/blightfall/README.md new file mode 100644 index 0000000..84b4e6c --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/blightfall/README.md @@ -0,0 +1,11 @@ +# Minecraft: Blightfall # + +https://www.technicpack.net/modpack/blightfall.592618/about + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/technic/blightfall/egg-blightfall.json b/ptero_eggs/minecraft/java/technic/blightfall/egg-blightfall.json new file mode 100644 index 0000000..474b4df --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/blightfall/egg-blightfall.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "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/ptero-eggs/yolks:java_8": "ghcr.io/ptero-eggs/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/ptero-eggs/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/ptero_eggs/minecraft/java/technic/hexxit/README.md b/ptero_eggs/minecraft/java/technic/hexxit/README.md new file mode 100644 index 0000000..72bb506 --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/hexxit/README.md @@ -0,0 +1,11 @@ +# Minecraft: Hexxit # + +https://www.technicpack.net/modpack/hexxit.552552 + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/technic/hexxit/egg-hexxit.json b/ptero_eggs/minecraft/java/technic/hexxit/egg-hexxit.json new file mode 100644 index 0000000..d34fe3d --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/hexxit/egg-hexxit.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "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/ptero-eggs/yolks:java_8": "ghcr.io/ptero-eggs/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/ptero-eggs/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/ptero_eggs/minecraft/java/technic/tekkit-classic/README.md b/ptero_eggs/minecraft/java/technic/tekkit-classic/README.md new file mode 100644 index 0000000..0b9322c --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/tekkit-classic/README.md @@ -0,0 +1,9 @@ +# Minecraft: Tekkit classic + +## Server Ports +The Minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/technic/tekkit-classic/egg-tekkit-classic.json b/ptero_eggs/minecraft/java/technic/tekkit-classic/egg-tekkit-classic.json new file mode 100644 index 0000000..a9f2e6b --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/tekkit-classic/egg-tekkit-classic.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "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": { + "Java 8": "ghcr.io/ptero-eggs/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": { + "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\/ptero-eggs\/game-eggs\/main\/minecraft\/java\/server.properties\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "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/ptero_eggs/minecraft/java/technic/tekkit-legends/README.md b/ptero_eggs/minecraft/java/technic/tekkit-legends/README.md new file mode 100644 index 0000000..7fcd5a0 --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/tekkit-legends/README.md @@ -0,0 +1,10 @@ +# Minecraft: Tekkit Legends + + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/technic/tekkit-legends/egg-tekkit-legends.json b/ptero_eggs/minecraft/java/technic/tekkit-legends/egg-tekkit-legends.json new file mode 100644 index 0000000..cb1291d --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/tekkit-legends/egg-tekkit-legends.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "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/ptero-eggs/yolks:java_8": "ghcr.io/ptero-eggs/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/ptero-eggs/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/ptero_eggs/minecraft/java/technic/tekkit-smp/README.md b/ptero_eggs/minecraft/java/technic/tekkit-smp/README.md new file mode 100644 index 0000000..4c6683b --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/tekkit-smp/README.md @@ -0,0 +1,10 @@ +# Minecraft: Tekkit SMP +https://www.technicpack.net/modpack/tekkit-smp.1988819 + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/technic/tekkit-smp/egg-tekkit-smp.json b/ptero_eggs/minecraft/java/technic/tekkit-smp/egg-tekkit-smp.json new file mode 100644 index 0000000..ba3d846 --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/tekkit-smp/egg-tekkit-smp.json @@ -0,0 +1,57 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-09-12T21:48:20+02:00", + "name": "Tekkit SMP", + "author": "lovinoes@lovinoes.de", + "description": "Tekkit SMP contains the full range of mods from Tekkit 2, plus the extra mods that were originally dropped in the transition from Technic SSP (to Technic SMP) to Tekkit, in favour of multiplayer and Bukkit support: mainly Thaumcraft, Mystcraft, and Mo' Creatures. The new Tekkit SMP expands on that with various carefully selected Thaumcraft and Mystcraft addons, alongside Mo' Creatures Extended, and smaller custom additions such as Re-Crystallized Wing. Electro-Magic Tools is another starring mod, being an addon to both Industrial Craft and Thaumcraft, combining the worlds of tech and magic.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "Java 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11" + }, + "file_denylist": [], + "startup": "java -server -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -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}", + "startup": "{\r\n \"done\": \"Server tick complete! \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/ash\r\n# Tekkit SMP Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napk update\r\napk add --no-cache curl zip unzip jq\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nBUILD_TYPE=${BUILD_TYPE:-\"recommended\"}\r\n\r\nif [ -z \"$MODPACK_VERSION\" ]; then\r\n MODPACK_VERSION=v$(curl -s https:\/\/solder.technicpack.net\/api\/modpack\/tekkit-smp | jq -r \".${BUILD_TYPE}\")\r\nfi\r\n\r\necho \"Downloading Tekkit SMP version ${MODPACK_VERSION} (This may take a while!)\"\r\ncurl -sSL \"https:\/\/servers.technicpack.net\/Technic\/servers\/tekkit-smp\/Tekkit-SMP_Server_${MODPACK_VERSION}.zip\" -o \"Tekkit-SMP_Server_${MODPACK_VERSION}.zip\"\r\nunzip -o \"Tekkit-SMP_Server_${MODPACK_VERSION}.zip\"\r\n\r\nrm -rf \"Tekkit-SMP_Server_${MODPACK_VERSION}.zip\"\r\nrm -f RestoreBackup.bat LaunchServer.bat LaunchServer.sh RestoreBackup.sh\r\n\r\nmv forge-1.12.2-*.jar forge.jar\r\n\r\nif [ ! -f server.properties ]; then\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/ptero-eggs\/game-eggs\/main\/minecraft\/java\/server.properties\r\nfi\r\n\r\necho \"Done\"", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Modpack Version", + "description": "The version of Tekkit SMP to download. \r\n\r\nOverrides BUILD TYPE, if set.", + "env_variable": "MODPACK_VERSION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:10", + "field_type": "text" + }, + { + "name": "Build Type", + "description": "The type of server jar to download from Technic Solder.", + "env_variable": "BUILD_TYPE", + "default_value": "recommended", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:recommended,latest", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/ptero_eggs/minecraft/java/technic/the-1-12-2-pack/README.md b/ptero_eggs/minecraft/java/technic/the-1-12-2-pack/README.md new file mode 100644 index 0000000..06a2012 --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/the-1-12-2-pack/README.md @@ -0,0 +1,14 @@ +# Minecraft: The 1.12.2 Pack + +https://www.technicpack.net/modpack/the-1122-pack.1406454 + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | + + +Egg is based on the "1.7.10 Pack"-Egg diff --git a/ptero_eggs/minecraft/java/technic/the-1-12-2-pack/egg-the1-12-2-pack.json b/ptero_eggs/minecraft/java/technic/the-1-12-2-pack/egg-the1-12-2-pack.json new file mode 100644 index 0000000..719498d --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/the-1-12-2-pack/egg-the1-12-2-pack.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "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/ptero-eggs/yolks:java_8": "ghcr.io/ptero-eggs/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/ptero-eggs/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/ptero_eggs/minecraft/java/technic/the-1-7-10-pack/README.md b/ptero_eggs/minecraft/java/technic/the-1-7-10-pack/README.md new file mode 100644 index 0000000..117f3b6 --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/the-1-7-10-pack/README.md @@ -0,0 +1,13 @@ +# Minecraft: The 1.7.10 Pack + +A very good modpack! + +https://www.technicpack.net/modpack/the-1710-pack.453902 + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/technic/the-1-7-10-pack/egg-the1-7-10-pack.json b/ptero_eggs/minecraft/java/technic/the-1-7-10-pack/egg-the1-7-10-pack.json new file mode 100644 index 0000000..88008ce --- /dev/null +++ b/ptero_eggs/minecraft/java/technic/the-1-7-10-pack/egg-the1-7-10-pack.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "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/ptero-eggs/yolks:java_8": "ghcr.io/ptero-eggs/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/ptero-eggs/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/ptero_eggs/minecraft/java/vanillacord/README.md b/ptero_eggs/minecraft/java/vanillacord/README.md new file mode 100644 index 0000000..e8a6ad4 --- /dev/null +++ b/ptero_eggs/minecraft/java/vanillacord/README.md @@ -0,0 +1,17 @@ +# VanillaCord + +A patch for vanilla servers to work with BungeeCord's ip_forward setting. + +This uses [ME1312's fork](https://github.com/ME1312/VanillaCord) of VanillaCord which has been updated for modern Minecraft. + +## Notes + +If you've set up Spigot, Paper or some other server with BungeeCord's IP forwarding you might know that you have to set online-mode to false. Due to the way that VanillaCord works this is not necessary with this Egg, you can (and should) leave online-mode as true. + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/ptero_eggs/minecraft/java/vanillacord/egg-vanilla-cord.json b/ptero_eggs/minecraft/java/vanillacord/egg-vanilla-cord.json new file mode 100644 index 0000000..d37096f --- /dev/null +++ b/ptero_eggs/minecraft/java/vanillacord/egg-vanilla-cord.json @@ -0,0 +1,61 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-11-06T06:47:00+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 8": "ghcr.io\/ptero-eggs\/yolks:java_8", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "java 22": "ghcr.io\/ptero-eggs\/yolks:java_22" + }, + "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}", + "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "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 ] && [ $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 ] && [ $MINOR_VERSION -eq 7 ] && [ $PATCH_VERSION -lt 10 ]; } || { [ $MAJOR_VERSION -eq 1 ] && [ $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", + "container": "eclipse-temurin:8-jdk-jammy", + "entrypoint": "ash" + } + }, + "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/ptero_eggs/minecraft/proxy/README.md b/ptero_eggs/minecraft/proxy/README.md new file mode 100644 index 0000000..702f186 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/README.md @@ -0,0 +1,12 @@ +# Minecraft Proxies + +* [Java](/minecraft/proxy/java/) + * [Travertine](/minecraft/proxy/java/travertine) + * [Velocity](/minecraft/proxy/java/velocity) + * [VIAaaS](/minecraft/proxy/java/viaaas) + * [Waterfall](/minecraft/proxy/java/waterfall) +* [Bedrock](/minecraft/proxy/bedrock) + * [Waterdog PE](/minecraft/proxy/bedrock/waterdogpe) +* [Cross Platform](/minecraft/proxy/cross_platform) + * [GeyserMC](/minecraft/proxy/cross_platform/geyser) + * [Waterdog](/minecraft/proxy/cross_platform/waterdog) diff --git a/ptero_eggs/minecraft/proxy/bedrock/README.md b/ptero_eggs/minecraft/proxy/bedrock/README.md new file mode 100644 index 0000000..15d8636 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/bedrock/README.md @@ -0,0 +1,6 @@ +# Mineraft Bedrock Proxies + +## Waterdog PE + +[Waterdog PE](https://github.com/WaterdogPE/WaterdogPE) +WaterdogPE is a brand new Minecraft: Bedrock Edition proxy software developed by the developers of the old Waterdog Proxy. diff --git a/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/README.md b/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/README.md new file mode 100644 index 0000000..6ba93d1 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/README.md @@ -0,0 +1,9 @@ +# Waterdog PE + +Brand new proxy server for Minecraft: Bedrock Edition + +## Server Ports + +| Port | default | +|----------|---------| +| server | 19132 | diff --git a/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/config.yml b/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/config.yml new file mode 100644 index 0000000..1ff35f4 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/config.yml @@ -0,0 +1,70 @@ +# Waterdog Main Configuration file +# Configure your desired network settings here. + +# A list of all downstream servers that are available right after starting +# address field is formatted using ip:port +# publicAddress is optional and can be set to the ip players can directly connect through +servers: + lobby1: + address: 127.0.0.1:19133 + public_address: play.myserver.com:19133 +listener: + # The Motd which will be displayed in the server tab of a player and returned during ping + motd: §bWaterdog§3PE + # The server priority list. If not changed by plugins, the proxy will connect the player to the first of those servers + priorities: + - lobby1 + # The address to bind the server to + host: 0.0.0.0:19132 + # The maximum amount of players that can connect to this proxy instance + max_players: 20 + # Map the ip a player joined through to a specific server + # for example skywars.xyz.com => SkyWars-1 + # when a player connects using skywars-xyz.com as the serverIp, he will be connected to SkyWars-1 directly + forced_hosts: {} +# Case-Sensitive permission list for players (empty using {}) +permissions: + TobiasDev: + - waterdog.player.transfer + - waterdog.player.list + alemiz003: + - waterdog.player.transfer + - waterdog.player.list +# List of permissions each player should get by default (empty using []) +permissions_default: +- waterdog.command.help +- waterdog.command.info +# Whether the debug output in the console should be enabled or not +enable_debug: false +# If enabled, encrypted connection between client and proxy will be created +upstream_encryption: true +# If enabled, only players which are authenticated with XBOX Live can join. If disabled, anyone can connect *with any name* +online_mode: true +# If enabled, the proxy will be able to bind to an Ipv6 Address +enable_ipv6: false +# If enabled, the proxy will pass information like XUID or IP to the downstream server using custom fields in the LoginPacket +use_login_extras: true +# Replaces username spaces with underscores if enabled +replace_username_spaces: false +# Whether server query should be enabled +enable_query: true +# If enabled, when receiving a McpeTransferPacket, the proxy will check if the target server is in the downstream list, and if yes, use the fast transfer mechanism +prefer_fast_transfer: true +# Fast-codec only decodes the packets required by the proxy, everything else will be passed rawly. Disabling this can create a performance hit +use_fast_codec: true +# If enabled, the proxy will inject all the proxy commands in the AvailableCommandsPacket, enabling autocompletion +inject_proxy_commands: true +# Upstream server compression ratio(proxy to client), higher = less bandwidth, more cpu, lower vice versa +upstream_compression_level: 6 +# Upstream server compression ratio(proxy to downstream server), higher = less bandwidth, more cpu, lower vice versa +downstream_compression_level: 2 +# Education features require small adjustments to work correctly. Enable this option if any of downstream servers support education features. +enable_edu_features: false +# Enable/Disable the resource pack system +enable_packs: true +# Whether texture packs should be enforced +force_apply_packs: false +# You can set maximum pack size in MB to be cached. +pack_cache_size: 16 +# Creating threads may be in some situations expensive. Specify minimum count of idle threads per internal thread executors. Set to -1 to auto-detect by core count. +default_idle_threads: -1 diff --git a/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/egg-waterdog-p-e.json b/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/egg-waterdog-p-e.json new file mode 100644 index 0000000..a3649ac --- /dev/null +++ b/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/egg-waterdog-p-e.json @@ -0,0 +1,61 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-12-24T14:04:46+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": { + "Java 22": "ghcr.io\/ptero-eggs\/yolks:java_22", + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Dterminal.ansi=true -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"Started query on \"\r\n}", + "logs": "{}", + "stop": "end" + }, + "scripts": { + "installation": { + "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\/ptero-eggs\/game-eggs\/main\/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 \"-----------------------------------------\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/egg-waterdog-pe.json b/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/egg-waterdog-pe.json new file mode 100644 index 0000000..35b40c2 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/bedrock/waterdog_pe/egg-waterdog-pe.json @@ -0,0 +1,60 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-04-02T11:21:58+02: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": { + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Dterminal.ansi=true -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"Started query on \"\r\n}", + "logs": "{}", + "stop": "end" + }, + "scripts": { + "installation": { + "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\/ptero-eggs\/game-eggs\/main\/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 \"-----------------------------------------\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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/ptero_eggs/minecraft/proxy/java/README.md b/ptero_eggs/minecraft/proxy/java/README.md new file mode 100644 index 0000000..6cb3bc0 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/java/README.md @@ -0,0 +1,17 @@ +# Minecraft Java Proxies + + +#### Travertine +[Travertine](https://papermc.io/downloads#Travertine) +Waterfall, with additional support for Minecraft 1.7.10. + +#### Velocity +[Velocity](https://velocitypowered.com) +Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility. + +#### VIAaaS +[VIAaaS](https://github.com/ViaVersion/VIAaaS) is the Minecraft plugin ViaVersion made standalone as a proxy. + +#### Waterfall +[Waterfall](https://papermc.io/downloads#Waterfall) +Paper fork of the BungeeCord software, with improved Forge support and more features. \ No newline at end of file diff --git a/ptero_eggs/minecraft/proxy/java/travertine/README.md b/ptero_eggs/minecraft/proxy/java/travertine/README.md new file mode 100644 index 0000000..8d79774 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/java/travertine/README.md @@ -0,0 +1,10 @@ +# Travertine server +Waterfall, with additional support for Minecraft 1.7.10. + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | \ No newline at end of file diff --git a/ptero_eggs/minecraft/proxy/java/travertine/egg-travertine.json b/ptero_eggs/minecraft/proxy/java/travertine/egg-travertine.json new file mode 100644 index 0000000..753a58b --- /dev/null +++ b/ptero_eggs/minecraft/proxy/java/travertine/egg-travertine.json @@ -0,0 +1,81 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-01-11T09:35:02+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": { + "Java 22": "ghcr.io\/ptero-eggs\/yolks:java_22", + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/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}", + "startup": "{\r\n \"done\": \"Listening on \"\r\n}", + "logs": "{}", + "stop": "end" + }, + "scripts": { + "installation": { + "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:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep 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 \"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.papermc.io\/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:\/\/api.papermc.io\/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:\/\/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\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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/ptero_eggs/minecraft/proxy/java/velocity/README.md b/ptero_eggs/minecraft/proxy/java/velocity/README.md new file mode 100644 index 0000000..c1c794d --- /dev/null +++ b/ptero_eggs/minecraft/proxy/java/velocity/README.md @@ -0,0 +1,10 @@ +# Velocity Minecraft Proxy +Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility. + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | \ No newline at end of file diff --git a/ptero_eggs/minecraft/proxy/java/velocity/egg-velocity.json b/ptero_eggs/minecraft/proxy/java/velocity/egg-velocity.json new file mode 100644 index 0000000..d471449 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/java/velocity/egg-velocity.json @@ -0,0 +1,81 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-01-11T09:35:02+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 22": "ghcr.io\/ptero-eggs\/yolks:java_22", + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/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}", + "startup": "{\r\n \"done\": \"Done (\"\r\n}", + "logs": "{}", + "stop": "end" + }, + "scripts": { + "installation": { + "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:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $VELOCITY_VERSION '.versions[] | contains($VERSION)' | grep true)\r\n LATEST_VERSION=$(curl -s https:\/\/api.papermc.io\/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:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true)\r\nLATEST_BUILD=$(curl -s https:\/\/api.papermc.io\/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:\/\/api.papermc.io\/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\/ptero-eggs\/game-eggs\/main\/minecraft\/proxy\/java\/velocity\/velocity.toml -o velocity.toml\r\nfi\r\n\r\nif [[ -f forwarding.secret ]]; then\r\n echo -e \"velocity forwarding secret file already exists\"\r\nelse\r\n echo -e \"creating forwarding secret file\"\r\n touch forwarding.secret\r\n date +%s | sha256sum | base64 | head -c 12 > forwarding.secret\r\nfi\r\n\r\necho -e \"install complete\"", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "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/ptero_eggs/minecraft/proxy/java/velocity/velocity.toml b/ptero_eggs/minecraft/proxy/java/velocity/velocity.toml new file mode 100644 index 0000000..0dbe304 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/java/velocity/velocity.toml @@ -0,0 +1,155 @@ +# Config version. Do not change this +config-version = "2.6" + +# What port should the proxy be bound to? By default, we'll bind to all addresses on port 25577. +bind = "0.0.0.0:25577" + +# What should be the MOTD? This gets displayed when the player adds your server to +# their server list. Only MiniMessage format is accepted. +motd = "<#09add3>A Velocity Server" + +# What should we display for the maximum number of players? (Velocity does not support a cap +# on the number of players online.) +show-max-players = 500 + +# Should we authenticate players with Mojang? By default, this is on. +online-mode = true + +# Should the proxy enforce the new public key security standard? By default, this is on. +force-key-authentication = true + +# If client's ISP/AS sent from this proxy is different from the one from Mojang's +# authentication server, the player is kicked. This disallows some VPN and proxy +# connections but is a weak form of protection. +prevent-client-proxy-connections = false + +# Should we forward IP addresses and other data to backend servers? +# Available options: +# - "none": No forwarding will be done. All players will appear to be connecting +# from the proxy and will have offline-mode UUIDs. +# - "legacy": Forward player IPs and UUIDs in a BungeeCord-compatible format. Use this +# if you run servers using Minecraft 1.12 or lower. +# - "bungeeguard": Forward player IPs and UUIDs in a format supported by the BungeeGuard +# plugin. Use this if you run servers using Minecraft 1.12 or lower, and are +# unable to implement network level firewalling (on a shared host). +# - "modern": Forward player IPs and UUIDs as part of the login process using +# Velocity's native forwarding. Only applicable for Minecraft 1.13 or higher. +player-info-forwarding-mode = "NONE" + +# If you are using modern or BungeeGuard IP forwarding, configure a file that contains a unique secret here. +# The file is expected to be UTF-8 encoded and not empty. +forwarding-secret-file = "forwarding.secret" + +# Announce whether or not your server supports Forge. If you run a modded server, we +# suggest turning this on. +# +# If your network runs one modpack consistently, consider using ping-passthrough = "mods" +# instead for a nicer display in the server list. +announce-forge = false + +# If enabled (default is false) and the proxy is in online mode, Velocity will kick +# any existing player who is online if a duplicate connection attempt is made. +kick-existing-players = false + +# Should Velocity pass server list ping requests to a backend server? +# Available options: +# - "disabled": No pass-through will be done. The velocity.toml and server-icon.png +# will determine the initial server list ping response. +# - "mods": Passes only the mod list from your backend server into the response. +# The first server in your try list (or forced host) with a mod list will be +# used. If no backend servers can be contacted, Velocity won't display any +# mod information. +# - "description": Uses the description and mod list from the backend server. The first +# server in the try (or forced host) list that responds is used for the +# description and mod list. +# - "all": Uses the backend server's response as the proxy response. The Velocity +# configuration is used if no servers could be contacted. +ping-passthrough = "DISABLED" + +# If not enabled (default is true) player IP addresses will be replaced by in logs +enable-player-address-logging = true + +[servers] +# Configure your servers here. Each key represents the server's name, and the value +# represents the IP address of the server to connect to. +lobby = "172.18.0.1:30066" +factions = "172.18.0.1:30067" +minigames = "172.18.0.1:30068" + +# In what order we should try servers when a player logs in or is kicked from a server. +try = [ + "lobby" +] + +[forced-hosts] +# Configure your forced hosts here. +"lobby.example.com" = [ + "lobby" +] +"factions.example.com" = [ + "factions" +] +"minigames.example.com" = [ + "minigames" +] + +[advanced] +# How large a Minecraft packet has to be before we compress it. Setting this to zero will +# compress all packets, and setting it to -1 will disable compression entirely. +compression-threshold = 256 + +# How much compression should be done (from 0-9). The default is -1, which uses the +# default level of 6. +compression-level = -1 + +# How fast (in milliseconds) are clients allowed to connect after the last connection? By +# default, this is three seconds. Disable this by setting this to 0. +login-ratelimit = 3000 + +# Specify a custom timeout for connection timeouts here. The default is five seconds. +connection-timeout = 5000 + +# Specify a read timeout for connections here. The default is 30 seconds. +read-timeout = 30000 + +# Enables compatibility with HAProxy's PROXY protocol. If you don't know what this is for, then +# don't enable it. +haproxy-protocol = false + +# Enables TCP fast open support on the proxy. Requires the proxy to run on Linux. +tcp-fast-open = false + +# Enables BungeeCord plugin messaging channel support on Velocity. +bungee-plugin-message-channel = true + +# Shows ping requests to the proxy from clients. +show-ping-requests = false + +# By default, Velocity will attempt to gracefully handle situations where the user unexpectedly +# loses connection to the server without an explicit disconnect message by attempting to fall the +# user back, except in the case of read timeouts. BungeeCord will disconnect the user instead. You +# can disable this setting to use the BungeeCord behavior. +failover-on-unexpected-server-disconnect = true + +# Declares the proxy commands to 1.13+ clients. +announce-proxy-commands = true + +# Enables the logging of commands +log-command-executions = false + +# Enables logging of player connections when connecting to the proxy, switching servers +# and disconnecting from the proxy. +log-player-connections = true + +[query] +# Whether to enable responding to GameSpy 4 query responses or not. +enabled = false + +# If query is enabled, on what port should the query protocol listen on? +port = 25577 + +# This is the map name that is reported to the query services. +map = "Velocity" + +# Whether plugins should be shown in query response by default or not +show-plugins = false diff --git a/ptero_eggs/minecraft/proxy/java/viaaas/README.md b/ptero_eggs/minecraft/proxy/java/viaaas/README.md new file mode 100644 index 0000000..d84615e --- /dev/null +++ b/ptero_eggs/minecraft/proxy/java/viaaas/README.md @@ -0,0 +1,12 @@ +# VIAaaS +VIAaaS is the Minecraft plugin ViaVersion made standalone as a proxy. + +More information is available here: https://github.com/ViaVersion/VIAaaS + +## Server Ports +The minecraft server requires a single port for access (default 25565), and one TCP port 25543, to be used for HTTPS and WebSocket connections. + +| Port | default | +|------------|---------| +| Game | 25565 | +| WS & HTTPS | 25543 | diff --git a/ptero_eggs/minecraft/proxy/java/viaaas/egg-v-i-aaa-s.json b/ptero_eggs/minecraft/proxy/java/viaaas/egg-v-i-aaa-s.json new file mode 100644 index 0000000..934c949 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/java/viaaas/egg-v-i-aaa-s.json @@ -0,0 +1,61 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-12-24T14:07:29+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": { + "Java 22": "ghcr.io\/ptero-eggs\/yolks:java_22", + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/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}", + "startup": "{\r\n \"done\": \"Application started in \"\r\n}", + "logs": "{}", + "stop": "end" + }, + "scripts": { + "installation": { + "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 \"-----------------------------------------\"", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "VIAaaS JAR File", + "description": "The name of the JAR file to be used when downloading & 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/ptero_eggs/minecraft/proxy/java/waterfall/README.md b/ptero_eggs/minecraft/proxy/java/waterfall/README.md new file mode 100644 index 0000000..0ca909b --- /dev/null +++ b/ptero_eggs/minecraft/proxy/java/waterfall/README.md @@ -0,0 +1,10 @@ +# Waterfall server +Paper fork of the BungeeCord software, with improved Forge support and more features. + +## Server Ports +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + + +| Port | default | +|-------|---------| +| Game | 25565 | \ No newline at end of file diff --git a/ptero_eggs/minecraft/proxy/java/waterfall/config.yml b/ptero_eggs/minecraft/proxy/java/waterfall/config.yml new file mode 100644 index 0000000..60295c9 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/java/waterfall/config.yml @@ -0,0 +1,3 @@ +listeners: +- query_port: 25573 + host: 0.0.0.0:25573 \ No newline at end of file diff --git a/ptero_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json b/ptero_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json new file mode 100644 index 0000000..3b24211 --- /dev/null +++ b/ptero_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json @@ -0,0 +1,81 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-01-11T09:35:02+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": { + "Java 22": "ghcr.io\/ptero-eggs\/yolks:java_22", + "Java 21": "ghcr.io\/ptero-eggs\/yolks:java_21", + "Java 17": "ghcr.io\/ptero-eggs\/yolks:java_17", + "Java 16": "ghcr.io\/ptero-eggs\/yolks:java_16", + "Java 11": "ghcr.io\/ptero-eggs\/yolks:java_11", + "Java 8": "ghcr.io\/ptero-eggs\/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}", + "startup": "{\r\n \"done\": \"Listening on \"\r\n}", + "logs": "{}", + "stop": "end" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Waterfall Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=waterfall\r\n\r\napt update\r\napt install -y curl jq\r\n\r\nif [ -n \"${DL_LINK}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_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:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep 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 \"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.papermc.io\/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:\/\/api.papermc.io\/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:\/\/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 config.yml ]; then\r\n\techo -e \"Downloading ${PROJECT} config.yml\"\r\n\tcurl -o config.yml https:\/\/raw.githubusercontent.com\/ptero-eggs\/game-eggs\/main\/minecraft\/proxy\/java\/waterfall\/config.yml\r\nelse\r\n\techo -e \"${PROJECT} config.yml exists. Will not pull a new file\"\r\nfi", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "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