eggs/game_eggs/minecraft/java/neoforge/egg-neo-forge.json

59 lines
7.2 KiB
JSON
Raw Normal View History

{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2024-03-06T21:55:56+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\/pterodactyl\/yolks:java_17",
"Java 16": "ghcr.io\/pterodactyl\/yolks:java_16",
"Java 11": "ghcr.io\/pterodactyl\/yolks:java_11",
"Java 8": "ghcr.io\/pterodactyl\/yolks:java_8"
},
"file_denylist": [],
"startup": "java -Xms128M -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\n# NeoForge Installation Script\n#\n# Server Files: \/mnt\/server\n\napt-get update\napt-get install -y curl xq openjdk-17-jdk\n\nif [[ ! -d \/mnt\/server ]]; then\n mkdir \/mnt\/server\nfi\n\ncd \/mnt\/server\n\n# Remove spaces from the version number to avoid issues with curl\nNEOFORGE_VERSION=\"$(echo \"$NEOFORGE_VERSION\" | tr -d ' ')\"\nMC_VERSION=\"$(echo \"$MC_VERSION\" | tr -d ' ')\"\n\n# If we have a specific NeoForge version set, use that\nif [[ ! -z ${NEOFORGE_VERSION} ]]; then\n # The 1.20.1 release lives in a different repository and is called \"forge\" instead of \"neoforge\"\n if [[ \"${NEOFORGE_VERSION}\" =~ \"1.20.1-\" ]]; then\n DOWNLOAD_LINK=https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/forge\/${NEOFORGE_VERSION}\/forge-${NEOFORGE_VERSION}\n ARTIFACT_NAME=\"forge\"\n else\n DOWNLOAD_LINK=https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/neoforge\/${NEOFORGE_VERSION}\/neoforge-${NEOFORGE_VERSION}\n ARTIFACT_NAME=\"neoforge\"\n fi\nelse\n # For NeoForge, downloading based on a Minecraft version is done by using the Maven metadata.\n # 1.20.1 is also handled differently here, because it's in a different repository and is called\n # \"forge\" instead of \"neoforge\".\n if [[ \"${MC_VERSION}\" == \"1.20.1\" ]]; then\n XML_DATA=$(curl -sSL https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/forge\/maven-metadata.xml)\n ARTIFACT_NAME=\"forge\"\n NEOFORGE_OLD=1\n else\n XML_DATA=$(curl -sSL https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/neoforge\/maven-metadata.xml)\n ARTIFACT_NAME=\"neoforge\"\n fi\n\n REPO_URL=\"https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/${ARTIFACT_NAME}\/\"\n\n # Get the latest version of Minecraft NeoForge supports. Here XML_DATA contains the metadata for\n # the new, \"neoforge\" repository, which is good since 1.20.1 will never be the latest anymore.\n if [[ \"${MC_VERSION}\" == \"latest\" ]] || [[ \"${MC_VERSION}\" == \"\" ]]; then\n echo \"Getting latest version of NeoForge.\"\n MC_VERSION=\"1.$(echo -e ${XML_DATA} | xq -x '\/metadata\/versioning\/release' | cut -d'.' -f1-2)\"\n fi\n\n echo \"Minecraft version: ${MC_VERSION}\"\n\n if [[ -z \"${NEOFORGE_OLD}\" ]]; then\n # For modern artifacts we cut the \"1.\" from the Minecraft version, and search for that\n VERSION_KEY=$(echo -n ${MC_VERSION} | cut -d'.' -f2-)\n else\n # For 1.20.1, it uses the same naming scheme as Forge, so we just append a dash\n VERSION_KEY=\"${MC_VERSION}-\"\n fi\n\n # Then we extract the latest the latest NeoForge version available based on the Maven metadata\n NEOFORGE_VERSION=$(echo -e ${XML_DATA} | xq -x \"(\/metadata\/versioning\/versions\/*[starts-with(text(), '${VERSION_KEY}')])\" | tail -n1)\n if [[ -z \"${NEOFORGE_VERSION}\" ]]; then\n echo \"The install failed, because there is no valid version of NeoForge for the version of Minecraft selected.\"\n exit 1\n fi\n\n echo \"NeoForge version: ${NEOFORGE_VERSION}\"\n\n DOWNLOAD_LINK=\"${REPO_URL}${NEOFORGE_VERSION}\/${ARTIFACT_NAME}-${NEOFORGE_VERSION}\"\nfi\n\necho \"Downloading NeoForge version ${NEOFORGE_VERSION}\"\necho \"Download link is ${DOWNLOAD_LINK}\"\n\n# Check if the download link we generated is valid\nif [[ ! -z \"${DOWNLOAD_LINK}\" ]]; then\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}-installer.jar; then\n echo -e \"Installer jar download link is valid.\"\n else\n echo -e \"Link is invalid. Exiting now\"\n exit 2\n fi\nelse\n echo -e \"No download link provided. Exiting now\"\n exit 3\nfi\n\n# If so, go ahead and download the installer\ncurl -s -o installer.jar -sS ${DOWNLOAD_LINK}-installer.jar\n\nif [[ ! -f .\/installer.jar ]]; then\n echo \"!!! Error downloading NeoForge version ${NEOFORGE_VERSION} !!!\"\n exit 4\nfi\n\n# Delete args to support downgrading\/upgrading\nrm -rf libraries\/net\/neoforged\/${ARTIFACT_NAME}\nrm unix_args.txt\n\n# Installing server\necho -e \"Installing NeoForge server.\\n\"\njava -jar installer.jar --installSe
"container": "debian:12-slim",
"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 or 1.20.1-47.1.95\r\n\r\nOverrides MC_VERSION. If it fails to download the server files it will fail to install.",
"env_variable": "NEOFORGE_VERSION",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|regex:\/^[0-9\\.\\-]+$\/",
"field_type": "text"
}
]
}