{
  "meta": {
    "version": "PTDL_v2",
    "update_url": null
  },
  "exported_at": "2026-08-19T16:57:41+00:00",
  "name": "Arclight",
  "author": "chredeur@pastanetwork.com",
  "description": "Implementación de servidor Bukkit sobre cargadores de mods comunes.",
  "features": [
    "eula",
    "java_version",
    "pid_limit"
  ],
  "container_version_map": [
    {
      "version": "auto",
      "docker_image": "ghcr.io/ptero-eggs/yolks:java_21"
    },
    {
      "version": "1.21.1",
      "docker_image": "ghcr.io/ptero-eggs/yolks:java_21"
    },
    {
      "version": "1.21",
      "docker_image": "ghcr.io/ptero-eggs/yolks:java_21"
    },
    {
      "version": "1.20.4",
      "docker_image": "ghcr.io/ptero-eggs/yolks:java_17"
    },
    {
      "version": "1.20.2",
      "docker_image": "ghcr.io/ptero-eggs/yolks:java_17"
    },
    {
      "version": "1.20.1",
      "docker_image": "ghcr.io/ptero-eggs/yolks:java_17"
    },
    {
      "version": "1.20",
      "docker_image": "ghcr.io/ptero-eggs/yolks:java_17"
    },
    {
      "version": "1.19.4",
      "docker_image": "ghcr.io/ptero-eggs/yolks:java_17"
    },
    {
      "version": "1.19.2",
      "docker_image": "ghcr.io/ptero-eggs/yolks:java_17"
    },
    {
      "version": "1.18.2",
      "docker_image": "ghcr.io/ptero-eggs/yolks:java_17"
    },
    {
      "version": "1.17.1",
      "docker_image": "ghcr.io/ptero-eggs/yolks:java_16"
    },
    {
      "version": "1.16.5",
      "docker_image": "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}} nogui",
  "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        }\n    }\n}",
    "startup": "{\"done\":\")! For help, type\"}",
    "logs": "{}",
    "stop": "stop"
  },
  "scripts": {
    "installation": {
      "script": "#!/bin/bash\n\nset -euo pipefail\n\nsource /usr/local/lib/egg-utils.sh\negg_init\n\nBASE_API_URL=\"https://files.hypoglycemia.icu/v1/files/arclight\"\n\nif [[ -n \"${DOWNLOAD_URL}\" ]]; then\n  egg_info \"Using custom download URL: ${DOWNLOAD_URL}\"\nelse\n  ARCLIGHT_VERSIONS=$(egg_cached_fetch \"${BASE_API_URL}/minecraft\" \"arclight-mc\" 3600 | jq -r '.files[].name' | sort -Vr)\n  if [[ -z \"${ARCLIGHT_VERSIONS}\" || \"${ARCLIGHT_VERSIONS}\" == \"null\" ]]; then\n    egg_error \"Could not fetch version list from API\"\n  fi\n\n  if [[ \"${MINECRAFT_VERSION}\" == \"auto\" ]]; then\n    MINECRAFT_VERSION=$(echo \"${ARCLIGHT_VERSIONS}\" | head -n 1)\n    egg_info \"Auto-selected MC version: ${MINECRAFT_VERSION}\"\n  else\n    VERSION_EXISTS=$(echo \"${ARCLIGHT_VERSIONS}\" | grep -Fx \"${MINECRAFT_VERSION}\" || true)\n    if [[ -z \"${VERSION_EXISTS}\" ]]; then\n      egg_warn \"Version '${MINECRAFT_VERSION}' not found, falling back to latest\"\n      MINECRAFT_VERSION=$(echo \"${ARCLIGHT_VERSIONS}\" | head -n 1)\n    fi\n  fi\n\n  LOADER_LIST=$(egg_cached_fetch \"${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders\" \"arclight-loaders-${MINECRAFT_VERSION}\" 3600 | jq -r '.files[].name')\n  if [[ -z \"${LOADER_LIST}\" || \"${LOADER_LIST}\" == \"null\" ]]; then\n    egg_error \"Could not fetch loader list for MC ${MINECRAFT_VERSION}\"\n  fi\n\n  LOADER_EXISTS=$(echo \"${LOADER_LIST}\" | grep -Fx \"${ARCLIGHT_LOADER}\" || true)\n  if [[ -z \"${LOADER_EXISTS}\" ]]; then\n    egg_error \"Loader '${ARCLIGHT_LOADER}' not found for MC ${MINECRAFT_VERSION}\"\n  fi\n\n  CHANNEL_DATA=$(curl -fsSL \"${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}\")\n  CHANNEL_LIST_NAME=$(echo \"${CHANNEL_DATA}\" | jq -r '.files[].name')\n\n  if [[ \"${ARCLIGHT_CHANNEL}\" == \"auto\" ]]; then\n    ARCLIGHT_CHANNEL=$(echo \"${CHANNEL_LIST_NAME}\" | grep -E 'latest-stable|version-stable|latest-snapshot|version-snapshot' | grep -x 'latest-stable' || true)\n    [[ -z \"${ARCLIGHT_CHANNEL}\" ]] && ARCLIGHT_CHANNEL=$(echo \"${CHANNEL_LIST_NAME}\" | grep -x 'version-stable' || true)\n    [[ -z \"${ARCLIGHT_CHANNEL}\" ]] && ARCLIGHT_CHANNEL=$(echo \"${CHANNEL_LIST_NAME}\" | grep -x 'latest-snapshot' || true)\n    [[ -z \"${ARCLIGHT_CHANNEL}\" ]] && ARCLIGHT_CHANNEL=$(echo \"${CHANNEL_LIST_NAME}\" | grep -x 'version-snapshot' | head -n 1 || true)\n    [[ -z \"${ARCLIGHT_CHANNEL}\" ]] && ARCLIGHT_CHANNEL=$(echo \"${CHANNEL_LIST_NAME}\" | tail -n 1)\n  else\n    local -a CHANNELS=()\n    if [[ \"${ARCLIGHT_CHANNEL}\" == \"beta\" ]]; then\n      CHANNELS=(\"latest-snapshot\" \"versions-snapshot\")\n    elif [[ \"${ARCLIGHT_CHANNEL}\" == \"stable\" ]]; then\n      CHANNELS=(\"latest-stable\" \"versions-stable\")\n    fi\n\n    for CH in \"${CHANNELS[@]}\"; do\n      if echo \"${CHANNEL_LIST_NAME}\" | grep -q \"${CH}\"; then\n        ARCLIGHT_CHANNEL=\"${CH}\"\n        break\n      fi\n    done\n\n    if [[ -z \"${ARCLIGHT_CHANNEL}\" ]]; then\n      egg_warn \"Channel not found, falling back to default\"\n      ARCLIGHT_CHANNEL=$(echo \"${CHANNEL_LIST_NAME}\" | grep -E 'latest-stable|version-stable|latest-snapshot|version-snapshot' | grep -x 'latest-stable' || true)\n      [[ -z \"${ARCLIGHT_CHANNEL}\" ]] && ARCLIGHT_CHANNEL=$(echo \"${CHANNEL_LIST_NAME}\" | grep -x 'version-stable' || true)\n      [[ -z \"${ARCLIGHT_CHANNEL}\" ]] && ARCLIGHT_CHANNEL=$(echo \"${CHANNEL_LIST_NAME}\" | grep -x 'latest-snapshot' || true)\n      [[ -z \"${ARCLIGHT_CHANNEL}\" ]] && ARCLIGHT_CHANNEL=$(echo \"${CHANNEL_LIST_NAME}\" | grep -x 'version-snapshot' | head -n 1 || true)\n      [[ -z \"${ARCLIGHT_CHANNEL}\" ]] && ARCLIGHT_CHANNEL=$(echo \"${CHANNEL_LIST_NAME}\" | tail -n 1)\n    fi\n  fi\n\n  CHANNEL_ENTRY=$(echo \"${CHANNEL_DATA}\" | jq -r \".files[] | select(.name==\\\"${ARCLIGHT_CHANNEL}\\\")\")\n  CHANNEL_TYPE=$(echo \"${CHANNEL_ENTRY}\" | jq -r '.type')\n\n  if [[ \"${CHANNEL_TYPE}\" == \"directory\" ]]; then\n    BUILD=$(curl -fsSL \"${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}/${ARCLIGHT_CHANNEL}\")\n    BUILD_NAME=$(echo \"${BUILD}\" | jq -r '.files[0]' | jq -r '.name')\n    DOWNLOAD_URL=\"${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}/${ARCLIGHT_CHANNEL}/${BUILD_NAME}\"\n  else\n    DOWNLOAD_URL=\"${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}/${ARCLIGHT_CHANNEL}\"\n  fi\n\n  egg_info \"Arclight ${MINECRAFT_VERSION}/${ARCLIGHT_LOADER}/${ARCLIGHT_CHANNEL}\"\nfi\n\nif [[ -f \"${SERVER_JARFILE}\" ]]; then\n  mv \"${SERVER_JARFILE}\" \"${SERVER_JARFILE}.old\"\nfi\n\negg_download \"${DOWNLOAD_URL}\" \"${SERVER_JARFILE}\"\n\negg_info \"Arclight installation complete\"\n",
      "container": "ghcr.io/enderhost/installers:latest",
      "entrypoint": "bash"
    }
  },
  "variables": [
    {
      "name": "Server Jar File",
      "description": "Nombre del archivo JAR del servidor que se creará (por ejemplo, server.jar).",
      "env_variable": "SERVER_JARFILE",
      "default_value": "server.jar",
      "user_viewable": true,
      "user_editable": true,
      "rules": "required|string|max:20",
      "field_type": "text",
      "source": "user"
    },
    {
      "name": "Minecraft Version",
      "description": "Versión de Minecraft que se descargará para Arclight.",
      "env_variable": "MINECRAFT_VERSION",
      "default_value": "auto",
      "user_viewable": true,
      "user_editable": true,
      "rules": "required|string|in:auto,1.21.1,1.21,1.20.4,1.20.2,1.20.1,1.20,1.19.4,1.19.2,1.18.2,1.17.1,1.16.5",
      "field_type": "select",
      "source": "user",
      "defines_version": true
    },
    {
      "name": "Download Path",
      "description": "URL de descarga personalizada opcional. Déjala vacía para usar la API de Arclight.",
      "env_variable": "DOWNLOAD_URL",
      "default_value": "",
      "user_viewable": false,
      "user_editable": false,
      "rules": "nullable|string",
      "field_type": "text",
      "source": "user"
    },
    {
      "name": "Arclight Channel",
      "description": "Selecciona el canal de compilación de Arclight (por ejemplo, stable o beta). Usa auto para elegir el más reciente.",
      "env_variable": "ARCLIGHT_CHANNEL",
      "default_value": "auto",
      "user_viewable": true,
      "user_editable": true,
      "rules": "required|string|in:stable,beta,auto",
      "field_type": "select",
      "source": "user"
    },
    {
      "name": "Arclight Loader",
      "description": "Selecciona el cargador de mods que quieres usar (forge, neoforge, fabric).",
      "env_variable": "ARCLIGHT_LOADER",
      "default_value": "forge",
      "user_viewable": true,
      "user_editable": true,
      "rules": "required|string|in:forge,neoforge,fabric",
      "field_type": "select",
      "source": "user"
    }
  ]
}
