mirror of
				https://github.com/pelican-eggs/eggs.git
				synced 2025-10-31 08:58:06 +00:00 
			
		
		
		
	Moves minecraft to a single folder with all the variants under that. This should also update all the installers to pull from the correct folders still.
		
			
				
	
	
		
			45 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
| {
 | |
|     "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
 | |
|     "meta": {
 | |
|         "version": "PTDL_v1"
 | |
|     },
 | |
|     "exported_at": "2019-11-17T11:02:14-05:00",
 | |
|     "name": "Curseforge Generic",
 | |
|     "author": "parker@parkervcp.com",
 | |
|     "description": "A generic egg for a forge modpack",
 | |
|     "image": "quay.io\/pterodactyl\/core:java",
 | |
|     "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar server.jar",
 | |
|     "config": {
 | |
|         "files": "{\r\n    \"server.properties\": {\r\n        \"parser\": \"properties\",\r\n        \"find\": {\r\n            \"server-ip\": \"0.0.0.0\",\r\n            \"server-port\": \"{{server.build.default.port}}\",\r\n            \"query.port\": \"{{server.build.default.port}}\"\r\n        }\r\n    }\r\n}",
 | |
|         "startup": "{\r\n    \"done\": \")! For help, type \",\r\n    \"userInteraction\": [\r\n        \"Go to eula.txt for more info.\"\r\n    ]\r\n}",
 | |
|         "logs": "{\r\n    \"custom\": false,\r\n    \"location\": \"logs\/latest.log\"\r\n}",
 | |
|         "stop": "stop"
 | |
|     },
 | |
|     "scripts": {
 | |
|         "installation": {
 | |
|             "script": "#!\/bin\/bash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nmkdir -p \/mnt\/server\r\n\r\nfunction install_required {\r\n    apt update\r\n    apt install -y curl jq unzip\r\n}\r\n\r\nfunction get_download {\r\n    # get json data to work with\r\n    echo -e \"Curling the json for the modpack\"\r\n    echo -e \"running: curl -sSL https:\/\/addons-ecs.forgesvc.net\/api\/v2\/addon\/${MODPACK_ID}\"\r\n    JSON_DATA=$(curl -sSL https:\/\/addons-ecs.forgesvc.net\/api\/v2\/addon\/${MODPACK_ID})\r\n\r\n    # if no modpack version is set or is set to latest\r\n    if [ -z ${MODPACK_VERSION} ] || [ \"${MODPACK_VERSION}\" = \"latest\" ]; then\r\n        echo -e \"Getting latest download url\"\r\n        # parse data to get the download url\r\n        FILE_ID=$(echo -e ${JSON_DATA} | jq -r .defaultFileId)\r\n        DOWNLOAD_URL=$(curl -sSL https:\/\/addons-ecs.forgesvc.net\/api\/v2\/addon\/${MODPACK_ID}\/file\/${FILE_ID}\/download-url)\r\n        echo -e \"Download url set to ${DOWNLOAD_URL}\"\r\n    else\r\n        echo -e \"Looking for download url for version ${MODPACK_VERSION}\"\r\n        # parse files for version match\r\n        FILES_JSON_DATA=$(curl -sSL https:\/\/addons-ecs.forgesvc.net\/api\/v2\/addon\/${MODPACK_ID}\/files)\r\n        # get element number to get the exact location in the json\r\n        FILES_JSON_ELEMENT=$(echo -e ${FILES_JSON_DATA} | jq --arg VERSION \"${MODPACK_VERSION}\" '.[] | select(.displayName) | .displayName | contains($VERSION)' | grep -n true | cut -f1 -d: | tail -1)\r\n        # if there wasn't a match default to latest\r\n        if [ ! -z ${FILES_JSON_ELEMENT} ]; then\r\n            echo -e \"No matching version found\"\r\n            echo -e \"defaulting to latest\"\r\n            DOWNLOAD_URL=$(echo -e ${FILES_JSON_DATA} | jq --arg ELEMENT \"${FILES_JSON_ELEMENT}\" '.[$ELEMENT|tonumber-1] | .downloadUrl')\r\n        else\r\n            echo -e \"Version match found\"\r\n            DOWNLOAD_URL=$(echo -e ${JSON_DATA} | jq -r .latestFiles[0].downloadUrl)\r\n            echo -e \"Download url set to ${DOWNLOAD_URL}\"\r\n        fi\r\n    fi\r\n\r\n    ## download modpack files\r\n    cd \/mnt\/server\r\n    echo \"Executing curl -L ${DOWNLOAD_URL} -o server.zip\"\r\n    curl -L \"${DOWNLOAD_URL}\" -o server.zip\r\n    unzip -o server.zip\r\n    rm -rf server.zip\r\n}\r\n\r\nfunction forge_install {\r\n    echo -e \"\\nInstalling forge server using the installer jar file.\\n\"\r\n    if [ -f \/mnt\/server\/*installer.jar ]; then\r\n        java -jar *installer.jar --installServer\r\n    else\r\n        echo \"No forge installer found moving on.\"\r\n    fi\r\n}\r\n\r\nfunction forge_cleanup {\r\n    echo -e \"\\nDeleting installer jar file and cleaning up.\\n\"\r\n    rm -rf *installer.jar\r\n    if [ ! -f \/mnt\/server\/*universal.jar ]; then\r\n        mv -v \/mnt\/server\/*\/* \/mnt\/server\/\r\n        mv *universal.jar server.jar\r\n    else\r\n        mv *universal.jar server.jar\r\n    fi\r\n}\r\n\r\nfunction json_download_prework {\r\n   mkdir -p \/mnt\/server\/mods\r\n   cd \/mnt\/server\/mods\r\n}\r\n\r\nfunction json_download_mods {\r\n    MANIFEST=\/mnt\/server\/manifest.json\r\n    for mod in $(jq -c '.files[]' ${MANIFEST} ); do\r\n        projID=$(echo $mod | jq -r \".projectID\")\r\n        fileID=$(echo $mod | jq -r \".fileID\")\r\n        URL=$(curl -sSL https:\/\/addons-ecs.forgesvc.net\/api\/v2\/addon\/${projID}\/file\/${fileID}\/download-url)\r\n        # this is saving everything as \/mnt\/server\/mods\/download\r\n        echo \"Mod direct url: ${URL}\"\r\n        curl -JLO \"${URL}\"\r\n    done\r\n}\r\n\r\nfunction json_download_forge {\r\n    cd \/mnt\/server\r\n    FORGE=$(jq -r '.minecraft.modLoaders[0].id' \/mnt\/server\/manifest.json | cut -d '-' -f2)\r\n    MCVER=$(jq -r '.minecraft.version' \/mnt\/server\/manifest.json)\r\n\tif [ ${MCVER} == \"1.7.10\" ] || [ ${MCVER} == \"1.8.9\" ]; then\r\n\t\tFORGE=\"${FORGE}-${MCVER}\"\r\n\tfi\r\n    FORGE_VERSION=\"${MCVER}-${FORGE}\"\r\n    \r\n    echo -e \"\\nDownloading Forge Version $FORGE_VERSION\\n\"\r\n    echo -r \"running curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-installer.jar -o installer.jar \\n\"\r\n    curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-installer.jar -o installer.jar\r\n    echo -r \"running curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-universal.jar -O \\n\"\r\n    curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-universal.jar -O\r\n    java -jar installer.jar --installServer\r\n    mv *universal.jar server.jar\r\n    rm installer.jar\r\n}\r\n\r\nfunction json_download_overrides {\r\n    if [ -d \/mnt\/server\/overrides ]; then\r\n        mv \/mnt\/server\/overrides\/mods\/* \/mnt\/server\/mods\/\r\n        rmdir \/mnt\/server\/overrides\/mods\r\n        mv \/mnt\/server\/overrides\/* \/mnt\/server\r\n        rmdir \/mnt\/server\/overrides\r\n    fi\r\n}\r\n\r\nfunction cfg_download_forge {\r\n    dos2unix settings.cfg # In case the pack was distributed with Windows-style line endings in the cfg file\r\n    MCVER=`grep 'MCVER' settings.cfg | sed 's\/;\/\/g' | cut -d '=' -f 2-`\r\n    FORGE=`grep 'FORGEVER' settings.cfg | sed 's\/;\/\/g' | cut -d '=' -f 2-`\r\n\r\n\tif [ ${MCVER} == \"1.7.10\" ] || [ ${MCVER} == \"1.8.9\" ]; then\r\n\t\tFORGE=\"${FORGE}-${MCVER}\"\r\n\tfi\r\n    \r\n    FORGE_VERSION=\"${MCVER}-${FORGE}\"\r\n    echo -e ${FORGE_VERSION}\r\n    \r\n    echo -e \"\\nDownloading Forge Version $FORGE_VERSION\\n\"\r\n    echo -r \"running curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-installer.jar -o installer.jar \\n\"\r\n    curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-installer.jar -o installer.jar\r\n    echo -r \"running curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-universal.jar -O \\n\"\r\n    curl -sS https:\/\/files.minecraftforge.net\/maven\/net\/minecraftforge\/forge\/$FORGE_VERSION\/forge-$FORGE_VERSION-universal.jar -O\r\n    java -jar installer.jar --installServer\r\n    mv *universal.jar server.jar\r\n    rm installer.jar\r\n}\r\n\r\ninstall_required\r\nget_download\r\nif [ -f \/mnt\/server\/manifest.json ]; then\r\n    json_download_prework\r\n    json_download_mods\r\n    json_download_overrides\r\n    json_download_forge\r\nelif [ -f \/mnt\/server\/settings.cfg ]; then\r\n    cfg_download_forge\r\nelse\r\n    forge_install\r\n    forge_cleanup\r\nfi",
 | |
|             "container": "openjdk:8-jdk-slim",
 | |
|             "entrypoint": "bash"
 | |
|         }
 | |
|     },
 | |
|     "variables": [
 | |
|         {
 | |
|             "name": "modpack project ID",
 | |
|             "description": "The modpack project ID from the curseforge site on the pack page.\r\n\r\n(Ex. https:\/\/minecraft.curseforge.com\/projects\/sevtech-ages ID is 268208)",
 | |
|             "env_variable": "MODPACK_ID",
 | |
|             "default_value": "",
 | |
|             "user_viewable": 1,
 | |
|             "user_editable": 1,
 | |
|             "rules": "required|string"
 | |
|         },
 | |
|         {
 | |
|             "name": "Modpack Version",
 | |
|             "description": "Version of the modpack to use.",
 | |
|             "env_variable": "MODPACK_VERSION",
 | |
|             "default_value": "",
 | |
|             "user_viewable": 1,
 | |
|             "user_editable": 1,
 | |
|             "rules": "required|string|max:20"
 | |
|         }
 | |
|     ]
 | |
| } |