Direct Download¶
Download mods and plugins directly from URLs or use local files.
Overview¶
| Feature | Value |
|---|---|
| API Key Required | No |
| Supports | Any accessible URL or local file |
| Use Cases | Custom mods, private files, direct URLs |
Methods¶
| Method | Description | Use Case |
|---|---|---|
MODS / PLUGINS |
Direct URL list | Simple URL-based downloads |
| Shared Directories | Local directories | Local or manually downloaded files |
Quick Start with mcctl¶
Using Direct URLs¶
# Create a Fabric server
mcctl create modded --type FABRIC --version 1.21.1
# Add mods from direct URLs
mcctl config modded MODS "https://example.com/custom-mod.jar,https://github.com/user/repo/releases/download/v1.0/mod.jar"
# Restart to apply
mcctl stop modded && mcctl start modded
Using Shared Directories¶
mcctl creates shared directories for mods and plugins:
Simply place your files in these directories and they are automatically available to all servers.
Configuration via mcctl¶
MODS Variable¶
For Forge/Fabric servers, download mods from URLs:
# Single mod
mcctl config myserver MODS "https://example.com/custom-mod.jar"
# Multiple mods (comma-separated)
mcctl config myserver MODS "https://example.com/mod1.jar,https://example.com/mod2.jar"
# Restart to apply
mcctl stop myserver && mcctl start myserver
PLUGINS Variable¶
For Paper/Spigot servers, download plugins from URLs:
# Single plugin
mcctl config myserver PLUGINS "https://example.com/custom-plugin.jar"
# Multiple plugins
mcctl config myserver PLUGINS "https://example.com/plugin1.jar,https://example.com/plugin2.jar"
# Restart to apply
mcctl stop myserver && mcctl start myserver
Supported Delimiters¶
URLs can be separated by:
- Commas:
url1,url2,url3 - Spaces:
url1 url2 url3 - Newlines (in config.env multi-line format)
Configuration Reference¶
| Config Key | Description |
|---|---|
MODS |
Comma/space/newline separated mod URLs or container paths |
PLUGINS |
Comma/space/newline separated plugin URLs or container paths |
Shared Directories¶
Directory Structure¶
mcctl init creates these shared directories:
~/minecraft-servers/
shared/
mods/ # Shared mod files (Forge, Fabric)
plugins/ # Shared plugin files (Paper, Spigot)
Using Shared Directories¶
- Place JAR files in the appropriate directory
- Files are automatically mounted to all servers (read-only)
- No configuration needed
# Example: Add a custom mod
cp ~/downloads/custom-mod.jar ~/minecraft-servers/shared/mods/
# The mod is automatically available to all Forge/Fabric servers
Benefits¶
- Shared across servers: One file serves all servers
- No configuration needed: Just drop files in the directory
- Read-only mount: Server cannot modify source files
- Easy updates: Replace file, restart servers
Complete Examples¶
GitHub Releases Download¶
# Create server
mcctl create modded --type FABRIC --version 1.21.1
# Add mods from GitHub releases
mcctl config modded MODS "https://github.com/CaffeineMC/sodium-fabric/releases/download/mc1.21-0.6.0/sodium-fabric-0.6.0+mc1.21.jar"
# Restart to apply
mcctl stop modded && mcctl start modded
Mixed Sources¶
# Create server
mcctl create modded --type FABRIC --version 1.21.1
# Direct URLs for custom mods
mcctl config modded MODS "https://example.com/custom-mod.jar"
# Modrinth for popular mods
mcctl config modded MODRINTH_PROJECTS "fabric-api,lithium,sodium"
# Restart to apply
mcctl stop modded && mcctl start modded
Local Development Setup¶
For mod development with local builds:
- Build your mod
- Copy to shared directory
- Restart server
# Copy built mod to shared directory
cp ~/my-mod/build/libs/my-mod-1.0.jar ~/minecraft-servers/shared/mods/
# Restart server to load the mod
mcctl stop modded && mcctl start modded
Server Network with Shared Plugins¶
All servers share the same plugins from shared/plugins/:
# Create multiple servers
mcctl create lobby --type PAPER --version 1.21.1
mcctl create survival --type PAPER --version 1.21.1
mcctl create creative --type PAPER --version 1.21.1
# Place shared plugins
cp luckperms.jar ~/minecraft-servers/shared/plugins/
cp vault.jar ~/minecraft-servers/shared/plugins/
# All servers now have these plugins
mcctl start --all
Advanced Configuration (Manual)¶
For advanced configurations, edit config.env directly:
Example config.env:
# Direct mod URLs (multi-line format)
MODS=https://example.com/mod1.jar
https://example.com/mod2.jar
https://github.com/user/repo/releases/download/v1.0/mod3.jar
# Auto-cleanup settings
REMOVE_OLD_MODS=TRUE
Using File Lists¶
For very large mod lists:
Content of mods.txt:
# Performance mods
https://example.com/lithium.jar
https://example.com/phosphor.jar
# Utility mods
https://example.com/mod-menu.jar
# Comments starting with # are ignored
# Blank lines are also ignored
# You can also use special prefixes
modrinth:fabric-api
curseforge:jei
Then set MODS_FILE in config.env:
Sync Path Customization¶
Customize where mods/plugins are synced:
# In config.env
COPY_MODS_SRC=/custom-mods
COPY_MODS_DEST=/data/mods
COPY_PLUGINS_SRC=/custom-plugins
COPY_PLUGINS_DEST=/data/plugins
Auto Cleanup¶
Remove Old Mods¶
Configure automatic cleanup before applying new content:
Exclude Specific Files¶
mcctl config myserver REMOVE_OLD_MODS_INCLUDE "*.jar"
mcctl config myserver REMOVE_OLD_MODS_EXCLUDE "keep-this-mod.jar"
Troubleshooting¶
Common Issues¶
| Issue | Cause | Solution |
|---|---|---|
| Download failed | Invalid URL or network issue | Verify URL is accessible |
| File not found | Wrong path | Check shared directory location |
| Permission denied | File permissions | Ensure files are readable |
| Mods not loading | Wrong server type | Verify TYPE matches mod loader |
Check Current Configuration¶
View Server Logs¶
# Check for mod/plugin loading errors
mcctl logs myserver
# Follow logs in real-time
mcctl logs myserver -f
Debug Mode¶
Enable debug output to troubleshoot:
Verify URL Access¶
Test URL accessibility:
Check Shared Directory¶
# List shared mods
ls -la ~/minecraft-servers/shared/mods/
# List shared plugins
ls -la ~/minecraft-servers/shared/plugins/