VelocityPacker
A easy plugin to send onetime a resourcepack over a proxy for velocity
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.
VelocityPacker
Velocitypacker
A Velocity plugin that automatically sends resource packs to players and stores their acceptance status in a SQLite database.
✨ Features
- 🔄 Detailed Logs - Pack is sent on every proxy join - 📊 Detailed Logs - Persistent storage of acceptance status - 🚫 Detailed Logs - Players cannot connect to servers until pack is accepted/declined - ⚡ Detailed Logs - Automatic connection to first server after successful acceptance - 🔒 Detailed Logs - No re-sending when switching between backend servers - 🎛️ Detailed Logs - Easy customization of all settings - 📋 Detailed Logs - Comprehensive information about pack status
🚀 Installation
1. Download Plugin
```bash
Clone repository
git clone https://github.com/TheLion102009/Velocitypacker.git cd Velocitypacker
Build plugin
./gradlew clean shadowJar ```
2. Install JAR
You can find the compiled JAR in `build/libs/Velocitypacker-0.1.jar`.
Copy this file to the `plugins/` folder of your Velocity server.
3. Start Server
Restart your Velocity server. The configuration file will be created automatically.
⚙️ Configuration
The `config.yml` is automatically created in the `plugins/velocitypacker/` folder:
```yaml
Resource pack URL (REQUIRED)
Must be a direct download URL to a .zip file
resourcePackUrl: https://example.com/resourcepack.zip
SHA-1 hash of the resource pack (OPTIONAL)
Format: 40 hexadecimal characters (e.g. a1b2c3d4e5f6...)
Leave empty if you don't want to use a hash
resourcePackSha1: ""
Message shown to the player
Supports Minecraft color codes with §
resourcePackPrompt: "§aPlease accept the resource pack to play!"
Kick player if the resource pack is declined
kickOnDecline: true
Kick player if the download fails
kickOnFailedDownload: true
Kick message (supports color codes with §)
kickMessage: "§cYou must accept the resource pack to play!" ```
Generate SHA-1 Hash
Windows: ```powershell certutil -hashfile resourcepack.zip SHA1 ```
Linux/Mac: ```bash sha1sum resourcepack.zip ```
🔧 How It Works
Player Join Process:
1. Pack declined → Resource pack is sent immediately 2. Pack declined → Player stays in resource pack screen 3. Pack declined → Automatic connection to first available server 4. Pack declined → Player is kicked (if configured)
Server Switch Process:
- Proxy rejoin → No re-sending (stored in session) - Proxy rejoin → Pack is sent again (new session)
Database:
- Stored data: `plugins/velocitypacker/resourcepack.db` - Stored data: UUID, acceptance status, timestamp
📋 Logs
The plugin provides detailed logs:
``` [INFO] Initializing Velocitypacker... [INFO] Configuration loaded [INFO] Database initialized [INFO] Event listener registered [INFO] Sent resource pack to player Spieler123 [INFO] Player Spieler123 successfully downloaded the resource pack [INFO] Connecting Spieler123 to lobby ```
🛠️ Technical Details
- Shadow Plugin: 3.4.0-SNAPSHOT - Shadow Plugin: 2.0.20-Beta1 - Shadow Plugin: 3.45.0.0 - Shadow Plugin: 2.2 - Shadow Plugin: For dependency bundling
🏗️ Build
```bash
Full build with all dependencies
./gradlew clean shadowJar
Compile only (without Shadow)
./gradlew build ```
The final JAR is approximately 16 MB in size and contains all necessary dependencies.
📝 Important Notes
- Database Backup: Must be a direct `.zip` download URL - Database Backup: Players can freely switch between backend servers - Database Backup: Data is automatically cleaned up on disconnect - Database Backup: SQLite file can be easily copied/backed up
🐛 Troubleshooting
Plugin doesn't load
- Make sure Velocity 3.4.0-SNAPSHOT is running - Check if all dependencies are correctly bundled
Resource pack is not sent
- Check the `resourcePackUrl` in the configuration - Make sure the URL is accessible
Players are not forwarded
- Check the server logs for errors - Make sure backend servers are available
📜 License
Created by thelion
🤝 Support
For questions or problems: - Create an issue in the GitHub repository - Check the logs for error messages - Make sure all dependencies are correctly installed
---
Good luck with your Velocitypacker plugin! 🎮