diff --git a/services/modpack-version-checker/blueprint-extension/README.md b/services/modpack-version-checker/blueprint-extension/README.md index 4a257ee..72adc39 100644 --- a/services/modpack-version-checker/blueprint-extension/README.md +++ b/services/modpack-version-checker/blueprint-extension/README.md @@ -43,12 +43,14 @@ A Pterodactyl Panel extension that checks modpack versions across CurseForge, Mo - (Future: Rate limit settings, notification preferences) ### Supported Platforms -| Platform | ID Type | API Key Required | -|----------|---------|------------------| -| CurseForge | Numeric project ID | ✅ Yes | -| Modrinth | Project ID or slug | ❌ No | -| FTB | Numeric modpack ID | ❌ No | -| Technic | URL slug | ❌ No | +| Platform | ID Type | API Key Required | Status | +|----------|---------|------------------|--------| +| CurseForge | Numeric project ID | ✅ Yes | ✅ Working | +| Modrinth | Project ID or slug | ❌ No | ✅ Working | +| FTB | Numeric modpack ID | ❌ No | ✅ Working | +| Technic | URL slug | ⚠️ Unknown | ❌ 401 Auth Error | + +> **Note (April 2026):** Technic Platform API now returns 401 Unauthorized. They may have changed their authentication requirements. Investigation ongoing. --- @@ -117,19 +119,21 @@ blueprint-extension/ ├── conf.yml # Blueprint configuration ├── build.sh # Injection script (runs during blueprint -build) │ -├── Controllers/ -│ └── ModpackAPIController.php # API endpoints (manualCheck, getStatus) +├── app/ # Merges into Pterodactyl's app/ via requests.app +│ ├── Console/ +│ │ └── Commands/ +│ │ └── CheckModpackUpdates.php # Laravel cron command +│ └── Http/ +│ └── Controllers/ +│ └── ModpackAPIController.php # API endpoints (manualCheck, getStatus) │ ├── admin/ │ ├── controller.php # Admin panel logic │ └── view.blade.php # Admin panel UI │ -├── console/ -│ └── CheckModpackUpdates.php # Laravel cron command -│ ├── database/ │ └── migrations/ -│ └── 2024_XX_XX_create_modpackchecker_servers_table.php +│ └── 2026_04_06_000000_create_modpackchecker_servers_table.php │ ├── routes/ │ └── client.php # API route definitions @@ -141,6 +145,16 @@ blueprint-extension/ └── UpdateBadge.tsx # Dashboard status dot component ``` +### Why the `app/` folder structure? + +Blueprint's `requests.app` field merges the contents of your `app/` folder directly into Pterodactyl's `app/` directory. This means: + +1. **PSR-4 Autoloading:** Your classes are automatically found by Laravel's autoloader +2. **Correct Namespaces:** Use `Pterodactyl\Http\Controllers` (not custom Blueprint namespaces) +3. **Case Sensitivity:** Linux requires exact folder casing — `Controllers/` not `controllers/` + +This architecture was validated through painful debugging and Gemini AI consultation. + --- ## Installation