Compatibility System
Prevents version/loader/modpack mismatches and surfaces compatibility in the browser.
Overview
Tunnely's compatibility system automatically detects and displays technical requirements for each server, preventing frustrating connection failures due to version or modpack mismatches. It supports multiple modpack platforms and custom formats.
Quick Summary
- Detects Minecraft version, loader, modpack ID/version
- Stores in DB and displays badges in server browser
- Match rules: version and loader must match; modpack (if both present) must match
- Supports CurseForge, Modrinth, and custom JSON format
How It Works
Tunnely automatically detects your Minecraft version, mod loader (Fabric/Forge/Quilt), and modpack ID when you start hosting.
For CurseForge packs, it reads the manifest.json file containing project ID and file ID.
For Modrinth packs, it reads the modrinth.index.json file with project ID and version ID.
For custom packs, you can create a tunnely-modpack.json file with your own identifiers.
This information is stored in the database and displayed as colored badges in the server browser.
The system enforces strict matching rules: Minecraft version and loader must match exactly, and if both players have modpacks, those must match too.
Visual indicators show compatibility at a glance - green badges indicate matches, red indicates mismatches.
Use Cases
Real-World Examples
CurseForge Modpack Format
Modrinth Modpack Format
Custom Modpack Format
Multi-Platform Support
Technical Details
- Version detection uses Minecraft's version manifest and loader metadata.
- CurseForge detection looks for manifest.json in the modpack root with fields: minecraft.modLoaders[].id, files[].projectID, files[].fileID
- Modrinth detection looks for modrinth.index.json with fields: versionId, dependencies.minecraft, dependencies.fabric-loader or dependencies.forge
- Custom format uses tunnely-modpack.json with fields: id (string), version (string), platform (optional: 'custom', 'curseforge', 'modrinth')
- File search order: tunnely-modpack.json → modrinth.index.json → manifest.json
- Compatibility checks happen both client-side (UI) and server-side (relay) for security.
- Database stores: minecraft_version, mod_loader, modpack_id, modpack_version, modpack_platform
- Indices on version/loader/modpack fields enable fast filtering queries.
Best Practices
- Always verify the server's version badges before attempting to join.
- If hosting a modpack server, ensure your pack has a proper manifest for detection.
- For custom packs, create a tunnely-modpack.json file in your .minecraft directory.
- Use semantic versioning (e.g., 1.0.0, 2.1.3) for modpack versions.
- Include both CurseForge and Modrinth files if distributing on both platforms.
- Use the search/filter features to show only compatible servers.
- When hosting, test that your compatibility info displays correctly in the browser.
Common Issues & Solutions
- Custom or heavily modified modpacks may not be detected automatically - add tunnely-modpack.json.
- Version mismatches will show an error before connection attempt to save time.
- If your modpack isn't detected, check that manifest files exist in .minecraft root.
- Ensure JSON files are valid - use a JSON validator if detection fails.
- Platform-specific IDs (CurseForge project ID vs Modrinth slug) are not interchangeable.