Installation & Setup
Eranio
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-rc.1+ installed and running
- PHP 8.5 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: Legacy scheme 1.x (minor 0-50) or Mojang's year scheme since 2026 (26.1, 26.2, 26.3, year at most next year). Normalised to major.minor. Cached 5 minutes.
Searching by version: The selected version covers the whole version family. 26.1 also finds entries marked only for 26.1.1 or 26.1.2, 1.21 finds 1.21.1 to 1.21.11. The patch versions come live from Mojang's version list (cached 12 hours), new versions such as 26.3.1 or 27.1 are detected without a plugin update.
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: 26.3"
- 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: 26.3 (Latest), 26.2, 26.1, 1.21 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-26.3.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