Installation & Setup
Installation & Setup
Complete step-by-step guide to installing the Game Mods Installer plugin and activating it for your game servers.
Prerequisites
- Pelican Panel version 1.0.0+ installed and running
- PHP 8.1, 8.2, or 8.3 on the panel server
- Writable directories:
storage/andbootstrap/cache/— permissions0755, owned by web server user (e.g.,www-data) - A game server managed by the panel
- Database user with CREATE TABLE permission (the plugin creates a migration on first load)
Step 1: Install the Plugin
- Download the latest release of the
game-modsplugin - Place it in your Pelican Panel's
plugins/directory:/var/www/pelican/plugins/game-mods/ - Verify the directory structure:
plugins/game-mods/ ├── src/ ├── config/ ├── resources/ ├── database/ └── plugin.json - Clear the application cache:
php artisan cache:clear php artisan config:clear php artisan view:clear - Verify the plugin appears in Admin Panel → Plugins as "Game Mods Installer"
The plugin automatically creates the server_installed_mods database table on first load.
Step 2: Activate for a Server
The plugin uses Feature Flags on Eggs to determine which servers show the Mod Browser.
- Go to Admin Panel → Eggs
- Edit the Egg used by your game server (e.g., "Minecraft Java", "Hytale Server")
- Add
modsto the Features field:
If the Egg already has features:["mods"]["steam_disk_space", "mods"] - Click Save
Important: The feature flag must be exactly
mods(lowercase).Mods,MODS, ormodwill not work.
Step 3: Game Detection
The plugin auto-detects your game by checking (in order):
- Egg Tags — keywords like
minecraft,hytale,bedrock - Egg Name — scans the egg name
- Nest Name — checks the parent nest name
For Hytale servers with PATCHLINE="release": alpha, beta, RC, and dev versions are automatically filtered out.
Minecraft Version Detection (11 Methods)
For Minecraft servers, the version is detected using 11 methods in priority order:
| Priority | Method | What It Checks |
|---|---|---|
| 1 | variables.txt |
Panel-stored server variables |
| 2 | server.properties |
Version-related properties |
| 3 | version.json |
Mojang's version manifest |
| 4 | Fabric JAR | Fabric server JAR filename |
| 5 | Forge JAR | Forge server JAR filename |
| 6 | Forge libraries | Library directory structure |
| 7 | Recursive search | Scans 7 directories (depth 1-6), skips node_modules, cache, temp, logs, crash-reports, world dirs, mods, plugins. Max path: 250 chars |
| 8 | server.jar |
Generic server JAR analysis |
| 9 | Paper JAR | PaperMC filename |
| 10 | Spigot JAR | Spigot filename |
| 11 | Purpur JAR | Purpur filename |
Validation: Must start with 1., minor version 0-50. Normalised to major.minor. Cached 5 minutes.
Step 4: First Launch
- Navigate to your server → click Mod Browser in sidebar
- The plugin scans to detect game and version (atomic lock, 10s TTL to prevent concurrent scans)
- If Minecraft detected: success notification "Minecraft version detected: 1.21.4"
- Platform tabs appear: Modrinth, CurseForge, Modtale
- Existing mods in
/mods/are auto-registered as "Manual / Upload" - Ready to search and install!
If detection fails: "Could not detect Minecraft version". Use the manual dropdown. Common versions listed: 1.21 (Latest) through 1.7, with 1.12 (Popular) and 1.8 (Legacy) labels.
Verification Checklist
| Check | Expected | If Not Working |
|---|---|---|
| Plugin in Admin → Plugins | "Game Mods Installer" listed | Wrong path or cache not cleared |
| "Mod Browser" in sidebar | Visible for mods-flagged servers |
Missing feature flag |
| Platform tabs | Modrinth, CurseForge, Modtale | Network or JS error |
| Version detection | "Detected: X.X.X" | Server never started or no JAR |
server_installed_mods table |
Exists in DB | Run php artisan migrate |
Troubleshooting
Plugin Not Visible in Admin Panel
- Ensure path is exactly
plugins/game-mods/(notplugins/GameMods/) - Run
php artisan cache:clearand reload - Check that
plugin.jsonexists in the plugin root - Check
storage/logs/laravel.logfor "Class not found" errors - Verify file permissions allow the web server to read the directory
"Mod Browser" Not in Server Sidebar
- The Egg must have
"mods"in Features — lowercase, exact - Save the Egg after editing
- Clear config cache:
php artisan config:clear - The plugin calls
abort(403)if the feature is missing
"Could Not Detect Minecraft Version"
- Start the server at least once to generate JAR +
version.json - Rename custom JARs to recognisable names (
server.jar,paper-1.21.4.jar) - JAR paths >250 chars are skipped
- Use manual dropdown as workaround
Database Migration Error
- Grant CREATE TABLE:
GRANT CREATE ON your_database.* TO 'user'@'localhost'; - Run manually:
php artisan migrate - Check
storage/logs/laravel.log
Permission Errors
chmod -R 755 storage/ bootstrap/cache/chown -R www-data:www-data storage/ bootstrap/cache/- SafeCacheService auto-creates cache dirs with
0755but parent must be writable