Configuration

Configuration

Complete reference for all settings, environment variables, caching behaviour, and detailed per-provider setup with error documentation.


Admin Panel Settings

Open settings via the gear icon on the Mod Browser page. Changes save immediately.

Settings Reference

Setting Default Range Env Variable Description
Cache Duration 30 min 0–1440 min MODS_CACHE_DURATION (seconds, default 1800) How long API responses are cached
Request Timeout 10 sec 1–30 sec MODS_REQUEST_TIMEOUT Max wait for platform API response
Mods Per Page 20 5–100 MODS_PER_PAGE Results per browse page
Auto-Replace On Toggle MODS_AUTO_REPLACE_VERSIONS Remove old versions on update
CurseForge API Key Text CURSEFORGE_API_KEY Required for CurseForge (password field, reveal button)
Modtale API Key Text MODTALE_API_KEY Optional for Modtale (password field, reveal button)

Detailed Cache TTLs

What Is Cached Cache Key Pattern TTL
Browse/search results browse_mods__{uuid}__{provider}__{gameVersion}__{loader}__{hash}__{page} 15 minutes
Installed mods list mods_server_{uuid} 10 minutes
Version lists per mod mod_versions_cache_{uuid}_{provider}_{modId} 1 hour
Update metadata mod_update__{uuid}__{modId} 24 hours
Detected MC version minecraft_version_{uuid} 5 minutes
Enriched installed data game_mods_data__{uuid} 24 hours
Server mod filenames server_{uuid}_mod_filenames 1 hour
Console widget updates mod_updates_{uuid} Widget-specific

The cache uses a file-based system with prefix GM_. SafeCacheService auto-creates directories with 0755 permissions. Flushing iterates all tracked keys.


All Environment Variables

Variable Default Description
MODS_CACHE_DURATION 1800 Cache duration in seconds
MODS_REQUEST_TIMEOUT 10 API timeout in seconds
MODS_PER_PAGE 20 Mods per browse page
MODS_AUTO_REPLACE_VERSIONS true Auto-remove old versions
CURSEFORGE_API_KEY CurseForge API key (shared with Modpacks + Plugins)
MODTALE_API_KEY Modtale API key (optional)

After changes: php artisan config:clear


Provider: Modrinth (Detailed)

Overview

No configuration required. Recommended platform for best experience.

Technical Specifications

Property Value
API Base https://api.modrinth.com/v2
Authentication None
Search Method POST /search with facets JSON
Auto-Facets [["project_type:mod"], ["server_side:required","server_side:optional"]]
Download Method Direct CDN URL from files[0].url
Integrity SHA-1 hash available for verification
Rate Limits Fair use (no published hard limit)

Search Capabilities

  • Full text search across names, slugs, descriptions
  • Minecraft version filter: Passed as facet
  • Mod loader filter: Passed as facet. Values 'all' and 'any' are automatically excluded
  • Results include: icon URL, name, author, description, downloads, date created, slug

Dependency Resolution

  • Dependencies with dependency_type === 'required' are detected
  • If a specific version_id is in the dependency data → that exact version is fetched
  • If no version_id → plugin searches for the latest compatible version
  • Dependencies installed before or alongside the main mod

Modrinth-Specific Errors

Error / Symptom Cause Solution
No search results API temporarily unavailable Check status.modrinth.com, retry later
Download failed CDN URL expired or unreachable Clear cache, re-search, retry
Empty version list No server-side versions for your MC version + loader Try different version/loader filter
Slow responses API under load Increase timeout to 20-30s
Facet error Invalid loader or version value sent Clear cache, check version format

Provider: CurseForge (Detailed)

Overview

Requires free API key. Largest mod library. Get key at console.curseforge.com.

Getting Your API Key

  1. Visit console.curseforge.com
  2. Create account (free) or sign in
  3. Go to "API Keys" → create new key
  4. Copy key → paste in plugin settings CurseForge API Key field
  5. Click Save

This key is shared across Game Mods, Modpacks, and Plugins via CURSEFORGE_API_KEY.

Technical Specifications

Property Value
API Base https://api.curseforge.com/v1
Authentication x-api-key header
Game IDs Minecraft = 432, Hytale = 70216
Class ID 9137 (Mods)
Max Page Size 50 items per request
Total Results Cap 10,000 maximum
Description Enrichment Separate /mods/{modId}/description call (HTML)
Slug Helper /mods/{modId} fetch for URL generation

Search Capabilities

  • Full text search
  • Sort options (12 available):
Sort Field ID Default Sort Order
Featured 1 Descending (used when query present)
Popularity 2 Descending (used when no query)
LastUpdated 3 Descending
Name 4 Ascending (only one that's ascending)
Author 5 Descending
TotalDownloads 6 Descending
Category 7 Descending
GameVersion 8 Descending
EarlyAccess 9 Descending
FeaturedReleased 10 Descending
ReleasedDate 11 Descending
Rating 12 Descending
  • Mod loader enum:
Loader CurseForge ID
Forge 1
Cauldron 2
LiteLoader 3
Fabric 4
Quilt 5
NeoForge 6
  • Version extraction: From gameVersions array, filtered by \d+\.\d+ regex

Dependency Resolution

  • relationType=3 = required dependency
  • Resolution is recursive (dependencies of dependencies are resolved too)
  • Each dependency resolved by CurseForge mod ID

Special: Manual Download Required

Some mod authors restrict direct downloads. When downloadUrl is empty:

  • Mod flagged as requires_manual_download: true
  • Plugin shows link to CurseForge page for manual download
  • This is a CurseForge policy, not a plugin limitation

CurseForge-Specific Errors

Error / Symptom Cause Solution
"CurseForge API key not set" No key configured Enter key in settings or set CURSEFORGE_API_KEY env var
HTTP 403 Forbidden Key invalid or lacks permissions Re-generate key at console.curseforge.com
HTTP 429 Too Many Requests Rate limit exceeded Increase cache duration, wait, reduce frequency
Empty download URL Author restricted downloads Download manually from CurseForge website
"CurseForge request failed" Network/API error Check connectivity to api.curseforge.com, increase timeout
Description not loading Enrichment API call failed Non-critical, mod still works
Slow responses CurseForge under heavy load Increase timeout to 20-30s
Wrong game results Game ID mismatch Verify egg tags match expected game

Provider: Modtale (Detailed)

Overview

API key optional but provides extended rate limits.

Getting API Key (Optional)

  1. Visit modtale.net/dashboard/developer
  2. Register developer account
  3. Generate API key
  4. Enter in plugin settings Modtale API Key field

Technical Specifications

Property Value
API Base https://api.modtale.net/api/v1
CDN https://cdn.modtale.net/
Authentication Optional X-MODTALE-KEY header
Pagination 0-based (page 0 = first page, unlike Modrinth/CurseForge which use 1)
Icons cdn.modtale.net/{thumbnail_path}
Downloads cdn.modtale.net/{file_download_path}

Modtale-Specific Errors

Error / Symptom Cause Solution
Slow results Modtale API slower than others Increase timeout
Rate limited Too many requests without key Add Modtale API key
CDN download failed cdn.modtale.net unreachable Check firewall, retry
No dependencies shown Modtale API doesn't provide dependency info Install dependencies manually

Search Query Sanitisation

All platforms: characters < > { } ' " are automatically stripped from search queries.


Troubleshooting

Settings Not Saving

  • Check storage/ is writable
  • php artisan config:clear
  • Check browser console (F12) for JS errors

Cache Not Clearing

  • SafeCacheService flush() iterates all tracked keys
  • If storage/framework/cache/ is missing or unwritable, cache operations fail
  • Error notification shows $e->getMessage() from the caught exception
  • Log: "Error clearing cache and scanning mods"

API Responses Returning Old Data

  • Each cache type has its own TTL (see table above)
  • Update metadata is cached 24 hours — click Clear Cache for immediate refresh
  • Browse results cached 15 minutes, installed list 10 minutes