URLDrop
In-game async download manager for Paper servers. Download large files directly to your server via URL — with GUI, progress tracking & Discord webhooks.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
URLDrop
---
📥 URLDrop
In-game async download manager for Servers
Download large files directly to your server via URL — without touching the console.
---
✨ What is URLDrop?
URLDrop is an admin-focused plugin that turns your Minecraft server into a download station. Instead of SSH-ing into your machine to `wget` a backup or a world archive, you open a chest GUI in-game, paste a URL, choose a destination, and let the server do the rest.
Perfect for: - 📦 Downloading server backups from remote storage - 🌍 Pulling world archives or data packs - 🔌 Staging plugin updates without leaving the game - 📁 Migrating large files between servers via URL
---
🖥️ GUI Overview
Open with `/urldrop` or `/ud`:
| Screen | Description | |--------|-------------| | Settings | Hub for all actions | | Settings | 5-step wizard: URL → path → filename → checksum → confirm | | Settings | Live progress bars, speed, ETA, cancel button | | Settings | Reorder, start-now, or remove pending jobs | | Settings | Re-download or purge completed entries | | Settings | Toggle runtime options without reloading |
---
⚡ Features
Downloads
- ✅ Async downloads on Auto-unzip — zero main-thread blocking - ✅ HTTP streaming directly to disk — no RAM spike for large files - ✅ Auto-unzip — picks up where it left off if interrupted - ✅ Configurable Auto-unzip - ✅ Automatic Auto-unzip (speed, ETA, % complete) - ✅ Auto-unzip `.zip` archives after download - ✅ Backup existing files before overwrite (with retention limit)
Security
- 🔒 Path traversal prevention (`..` blocked before and after normalization) - 🔒 URL validation — `http`/`https` only, optional domain whitelist/blacklist - 🔒 Blocked file extensions / content-type filtering - 🔒 Optional atomically move before file is placed - 🔒 Downloads stage to a temp file first, then atomically move to destination - 🔒 File size hard cap (default 2 GB)
Destinations
- 📂 aliases the server process can reach (relative or absolute) - 📂 Works with Pterodactyl (`/home/container/...`) - 📂 Configurable path aliases (e.g. type `backup` → resolves to `backups/`)
Notifications
- 💬 Clickable in-game Adventure messages with `[Retry]` / `[History]` buttons - 🔔 Operator join reminders for downloads that finished while you were offline - 🟣 Discord webhook support with rich embeds
Commands
``` /ud Open GUI /ud download <url> <path> Start immediately /ud queue <url> <path> Add to queue /ud status [id] Show progress /ud cancel <id> Cancel /ud retry <id> Retry failed download /ud history Recent history in chat /ud debug <id> Full diagnostics /ud reload Reload config ```
---
⚙️ Configuration
Four config files are generated on first run:
| File | Purpose | |------|---------| | `config.yml` | Limits, timeouts, retry, security, notifications | | `messages.yml` | All messages (MiniMessage format — fully customisable) | | `paths.yml` | Aliases, sensitive paths, blocked fragments | | `webhook.yml` | Discord webhook URL and event toggles |
Quick example — `config.yml`
```yaml max-simultaneous-downloads: 3 max-file-size-mb: 2048 allow-resume: true auto-unzip: false require-checksum-for-sensitive-paths: false operator-notify-on-complete: true ```
Quick example — `paths.yml` aliases
```yaml aliases: backup: "backups" update: "plugins/update" home: "/home/container" ```
---
🔐 Permissions
| Permission | Description | |------------|-------------| | `urldrop.admin` | All permissions | | `urldrop.open` | Open the GUI | | `urldrop.download` | Start downloads | | `urldrop.queue` | Queue downloads | | `urldrop.cancel` | Cancel downloads | | `urldrop.history` | View history | | `urldrop.settings` | Toggle settings | | `urldrop.reload` | Reload config | | `urldrop.debug` | View diagnostics |
All permissions default to operator only.
---
📋 Requirements
| Requirement | Version | |-------------|---------| | Server | Paper 1.21.x | | Java | 21+ |
No other plugins required. Gson is bundled inside the JAR.
---