{
  "meta": {
    "version": "PTDL_v2",
    "update_url": null
  },
  "exported_at": "2026-08-15T02:37:17+00:00",
  "name": "NeoForge",
  "author": "glorantv@icloud.com",
  "description": "Servidor NeoForge. NeoForge es una API de modding que facilita la creación de mods y la compatibilidad entre ellos. NeoForge es un fork de Minecraft Forge.",
  "features": [
    "eula",
    "java_version",
    "pid_limit"
  ],
  "container_version_map": [
    {
      "version": "latest",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.21.11",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.21.10",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.21.9",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.21.8",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.21.7",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.21.6",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.21.5",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.21.4",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.21.3",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.21.1",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.20.6",
      "docker_image": "ghcr.io/parkervcp/yolks:java_21"
    },
    {
      "version": "1.20.4",
      "docker_image": "ghcr.io/parkervcp/yolks:java_17"
    },
    {
      "version": "1.20.2",
      "docker_image": "ghcr.io/parkervcp/yolks:java_17"
    },
    {
      "version": "1.20.1",
      "docker_image": "ghcr.io/parkervcp/yolks:java_17"
    }
  ],
  "file_denylist": [],
  "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true @unix_args.txt",
  "config": {
    "files": "{\n    \"server.properties\": {\n        \"parser\": \"properties\",\n        \"find\": {\n            \"server-ip\": \"0.0.0.0\",\n            \"server-port\": \"{{server.build.default.port}}\",\n            \"query.port\": \"{{server.build.default.port}}\"\n        }\n    }\n}",
    "startup": "{\"done\":\")! For help, type\"}",
    "logs": "{}",
    "stop": "stop"
  },
  "scripts": {
    "installation": {
      "script": "#!/bin/bash\n# NeoForge Installation Script\n# Server Files: /mnt/server\n\nset -euo pipefail\n\napt-get update\napt-get install -y curl xq openjdk-17-jdk\n\nmkdir -p /mnt/server\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 [[ -n \"${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  # 1.20.1 is handled differently because it is in a different repository.\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  # Latest Minecraft version supported by NeoForge from maven metadata.\n  if [[ \"${MC_VERSION}\" == \"latest\" || -z \"${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    VERSION_KEY=$(echo -n \"${MC_VERSION}\" | cut -d'.' -f2-)\n  else\n    VERSION_KEY=\"${MC_VERSION}-\"\n  fi\n\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 \"Install failed: no valid NeoForge version for selected Minecraft version.\"\n    exit 1\n  fi\n\n  echo \"NeoForge version: ${NEOFORGE_VERSION}\"\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\nif [[ -n \"${DOWNLOAD_LINK}\" ]]; then\n  if curl --output /dev/null --silent --head --fail \"${DOWNLOAD_LINK}-installer.jar\"; then\n    echo \"Installer jar download link is valid.\"\n  else\n    echo \"Link is invalid. Exiting now\"\n    exit 2\n  fi\nelse\n  echo \"No download link provided. Exiting now\"\n  exit 3\nfi\n\ncurl -sSLo installer.jar \"${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 -f unix_args.txt\n\necho \"Installing NeoForge server.\"\njava -jar installer.jar --installServer || {\n  echo\n  echo \"Install failed using NeoForge version ${NEOFORGE_VERSION} and Minecraft version ${MC_VERSION}.\"\n  echo \"If memory is unlimited (0), increase install memory limits for the installer.\"\n  exit 5\n}\n\nln -sf \"libraries/net/neoforged/${ARTIFACT_NAME}\"/*/unix_args.txt unix_args.txt\n\necho \"Deleting installer.jar file.\"\nrm -f installer.jar\n\necho \"Installation process is completed!\"\n",
      "container": "ghcr.io/pelican-eggs/installers:debian",
      "entrypoint": "bash"
    }
  },
  "variables": [
    {
      "name": "Minecraft Version",
      "description": "La versión de Minecraft que deseas instalar. Si dejas latest, se instalará la versión compatible más reciente.",
      "env_variable": "MC_VERSION",
      "default_value": "latest",
      "user_viewable": true,
      "user_editable": true,
      "rules": "required|string|in:latest,1.21.11,1.21.10,1.21.9,1.21.8,1.21.7,1.21.6,1.21.5,1.21.4,1.21.3,1.21.1,1.20.6,1.20.4,1.20.2,1.20.1",
      "field_type": "select",
      "source": "user",
      "defines_version": true
    },
    {
      "name": "NeoForge Version",
      "description": "La versión exacta completa, por ejemplo 20.4.194 o 1.20.1-47.1.95. Sobrescribe MC_VERSION.",
      "env_variable": "NEOFORGE_VERSION",
      "default_value": "",
      "user_viewable": true,
      "user_editable": true,
      "rules": "nullable|regex:/^[0-9.\\-]+$/",
      "field_type": "text",
      "source": "user"
    }
  ]
}
