Velocity Server Switcher

# Server Switcher
A Velocity plugin that provides a **permission-based server switching system** for your Minecraft network.

## Features
– Fully configurable formatted server list with [MiniMessage](https://docs.papermc.io/adventure/minimessage/format/) support
– Grouping of servers
– Detection of online status of the server
– Permissions to control which servers players can access and see in the server list

## Commands
– `/server` – Lists all servers the player has access to
– `/server ` – Switches the player to the selected server
– `/server reload` – Reloads the plugin configuration file

> **⚠️ Warning**
>
> It is strongly advised to avoid naming a server `reload`. Doing so will likely cause a conflict for players with the `serverswitcher.reload` permission.

## Permissions

| Permission | Description |
|—————————————|———————————————————-|
| `serverswitcher.list` | Access to the `/server` command |
| `serverswitcher.reload` | Access to `/server reload` |
| `serverswitcher.server.` | Allows access to the server `` |
| `serverswitcher.group.` | Allows access to all servers in the group `` |

– `serverswitcher.server.` and `serverswitcher.group.` can *optionally* be overriden with custom permission names in the config file.
– If a player does not have permission to access a server the server will be hidden from them by default. Setting the config value `alwaysShow` to `true` for a group or server, the server will always show up in the listing, but the player will be denied access if they attempt to connect while not having the permissions.

> **⚠️ Warning**
>
> This plugin **does not prevent a player from being on a server**; it only controls whether they can switch there themselves. If there are other ways to join a server, they may bypass this restriction. You might also want to prevent access to the Velocity server command by setting `velocity.command.server` to `false`.

## Config
See the [config.toml](https://github.com/Evitonative/ServerSwitcher/blob/master/src/main/resources/config.toml) file for available options.

VelocityRouter

# VelocityRouter

> Route players across your Minecraft network dynamically based on their permissions and the hostname they connect to.

## Overview

**VelocityRouter** is a powerful routing plugin for Velocity proxy servers that directs players to specific backend servers based on:

* The hostname they joined with,
* Their permissions,
* And fallback default servers when no permissions match or servers are offline.

This allows you to create complex routing rules for different player groups like VIPs, staff, or general users with ease.

## Features

* **Permission-Based Routing**
Direct players to different servers depending on their assigned permissions.

* **Hostname-Based Routing**
Configure routing rules specific to the hostname or domain players connect with.

* **Fallback Servers**
Specify default servers for each hostname if no permission route matches or if the target server is offline.

* **Custom Deny Messages**
Display personalized messages to players who lack permission to access certain servers.

* **Wildcard Support**
Use a wildcard (`*`) hostname to define global fallback routing rules.

## Example Configuration

“`yaml
routes:
# Route 1: Default general access
– hostname: “play.example.com”
defaultServer: “lobby”
permissionRoutes: [] # No special permission routing for this hostname

# Route 2: VIP access
– hostname: “vip.example.com”
defaultServer: “vip_lobby” # Fallback if no permission matches or VIP server is offline
permissionRoutes:
– permission: “velocity.vip.access”
targetServer: “vip_server”
denyMessage: “You need VIP rank to access this server.”

# Route 3: Staff access
– hostname: “staff.example.com”
defaultServer: “admin_lobby” # Fallback if no permission matches
permissionRoutes:
– permission: “velocity.staff.access”
targetServer: “staff_server”
denyMessage: “You do not have staff access.”

# Route 4: Global fallback (wildcard hostname)
– hostname: “*” # Matches any hostname not explicitly configured above
defaultServer: “lobby”
permissionRoutes: []
“`

## How It Works

1. When a player connects, **VelocityRouter** checks the hostname they used.
2. It looks for a matching route configuration.
3. Within that route, it checks for any permission-based routes the player qualifies for.
4. If a matching permission route is found and the target server is online, the player is forwarded there.
5. If no permission matches or the server is offline, the player is sent to the route’s `defaultServer`.
6. If the player lacks permission for a matched permission route, the configured `denyMessage` is shown.

VelocityResourcepacks

###### ![https://i.imgur.com/O6LAUDf.png](https://i.imgur.com/O6LAUDf.png) Made in Germany with love (and [beer](https://s.moep.tv/beer))

######

![Velocity Resourcepacks Logo](https://i.phoenix616.dev/hqLoZwBh.png)

_Did you ever want to set one Server Resource Pack for your whole Velocity network? Or set a different pack for a couple of your servers behind your Velocity proxy and got annoyed by Minecraft re-downloading the same pack while switching servers? Then you came to the right place!_

This plugin lets you set one Server Resource Pack for you whole Velocity without the need to set them on your lobby server which would result in the client re-downloading the pack even when it already had it enabled!

It also has the ability to set the pack for each server individually and it even detects if the server behind the Velocity has send a pack itself and resets the pack to the global or server’s pack if the player switches to another server!

You can use my [Bungee Resourcepacks](https://modrinth.com/plugin/bungeeresourcepacks) plugin if you use the BungeeCord proxy and [World Resourcepacks](https://modrinth.com/plugin/worldresourcepacks) if you are looking for a Spigot/Paper version. It lets you set the pack per world and is compatible with this one.

**Please check if there are newer [development builds](https://ci.minebench.de/job/resourcepacksplugins/) before reporting issues!**

> Please note that the Vanilla Minecraft client only applies server resource packs that are smaller than **250MiB**! (50MiB before 1.15, 100MiB before in 1.18)
>
> Also certain new **SSL certificates** for URLs (like Let’s Encrypt) do not work with the old Java version shipped with Minecraft (Java 1.8.0_51, [a bug report](https://bugs.mojang.com/browse/mc-143768) regarding that has been filed with Mojang) so you’ll have to either use a different certificate or a non encrypted download (not recommended!)

**Note:** This plugin only works on clients with versions above 1.8!

### **Features**

* Set different server resourcepacks per server or whole Velocity network
* Multiple pack support (on 1.20.3+)
* Sending the pack before the player joins the server (on 1.20.3+)
* Match server names with regex!
* Commands to configure the plugin ingame
* Language system with messages depending on the locale of the client
* Simplified compoment/json message formatting syntax ([MineDown](https://wiki.phoenix616.dev/library:minedown:syntax))
* Configurable delay before sending the pack to a player
* Remembers which pack a user has currently applied and doesn’t resend on server switch (broken on 1.20.2, 1.20.3+ has that fixed)
* Let the user set the pack himself. The pack can be re-applied on each login and will be used for resets on servers that don’t have the pack
* Inform the user which pack the server send them if it was done automatically
* [ResourcePackSendEvent](https://docs.phoenix616.dev/resourcepacksplugins/de/themoep/resourcepacksplugin/velocity/events/resourcepacksendevent.html) and [ResourcePackSelectEvent](https://docs.phoenix616.dev/resourcepacksplugins/de/themoep/resourcepacksplugin/velocity/events/resourcepackselectevent.html) for developers to react on the sending or selecting of a pack in their own plugins
* Send the correct pack format depending on the client’s version with pack-variants either via the version, protocol number or pack format id.
* Automatically generates the sha1 hashes!
* Compatible with [AuthMe Reloaded](https://www.spigotmc.org/resources/authme-reloaded.6269/), AuthMeVelocity, [OpenLogin](https://www.spigotmc.org/resources/openlogin-1-7x-1-19x.57272/), NLogin, [LibrePremium](https://www.spigotmc.org/resources/librepremium-proxy-authorization-plugin-automatic-login-2fa.101040/), JPremium.
Do you need it to be compatible with more plugins? [Contact me](https://github.com/phoenix616/resourcepacksplugins/issues/new)!

### **Commands**
To execute every /vrp command you need the `velocityresourcepacks.command` permission!

**/vrp reload [resend]** – `velocityresourcepacks.command.reload` – Reloads the config file; resends the packs to every online player if the 2nd argument is “resend”

**/vrp version** – `velocityresourcepacks.command.version` – Shows the version of this plugin

**/vrp generatehashes** – `velocityresourcepacks.command.generatehashes` – Manually generate the resource pack hashes

**/vrp addpack ** – `velocityresourcepacks.command.addpack` – Add a new pack

**/vrp pack ** – `velocityresourcepacks.command.pack` – View and edit an existing pack

**/vrp listassignments** – `velocityresourcepacks.command.listassignments` – View all server assignments

**/vrp deleteassignment ** – `velocityresourcepacks.command.deleteassignment` – Delete a server assignment

**/vrp assignment ** – `velocityresourcepacks.command.assignment` – View and edit a server assignment

**/vrp globalassignment** – `velocityresourcepacks.command.globalassignment` – View and edit the global assignment

**/resetpack [] []** – `velocityresourcepacks.command.resetpack` – Reset the pack (of a player) to the empty one or the stored pack. (Like what would happen if you joined a server without any pack) If is set to false the stored pack of the player is reset too.

To execute every /usepack command you need the `velocityresourcepacks.command.usepack` permission!

To execute it for other players you need `velocityresourcepacks.command.usepack.others`!

To have access to a specific pack a player needs the `velocityresourcepacks.pack.` permission or the one defined for the pack in it’s config section!

**/usepack** – List all packs available to you

**/usepack []** – Send a specific pack to yourself or another player

### **Config**

The config.yml allows you to configure everything you can do set up via the commands and a lot more, take a look at the commands in the [file on GitHub](https://github.com/phoenix616/resourcepacksplugins/blob/master/velocity/src/main/resources/velocity-config.yml) for an explanation on all options! (Some might only be available on the [latest development builds](https://ci.minebench.de/job/ResourcepacksPlugins/)!

### **About the client freeze**
> **This should no longer be an issue starting with 1.20.3!**

When a server resource pack is send to a client it will shortly freeze after the download is complete. (Same as manually applying a local pack) This happens because the client has to reload all resources, check which resources overlap and do some other calculation and manipulation with them. (Like stitching all the textures together to a single image like they were in the first texture pack format) It’s not a download issue as the client will locally cache the pack files and not re-download them if their hash didn’t change.

How long this takes generally depends on the PC’s performance and the size of the textures (HD packs take longer) that are used in all resource packs that the player has applied. (So even if the server resource pack doesn’t contain any HD textures or textures at all the client will still completely reload all locally applied resource packs) This is something that has to be fixed in the client by Mojang for example by only reloading resources that changed.

**1.14, 1.15 and 1.16 have some major improvements there and 1.20.3 basically fixed it all so suggest players to use these if they have issues with your server resourcepack!**

### **Dev-Resources**
The source is available on [GitHub](https://github.com/phoenix616/resourcepacksplugins) and licensed under the [GPLv3](https://github.com/phoenix616/resourcepacksplugins/blob/master/license).
Development builds can be found on the Minebench.de [Jenkins](http://ci.minebench.de/job/resourcepacksplugins/).
There are also some [Javadocs](http://docs.phoenix616.dev/resourcepacksplugins/) if you intend to develop plugins based on mine.

### **Support**
You can receive support in the [resource discussion thread on PaperMC](https://forums.papermc.io/threads/velocityresourcepacks.30/), the [GitHub issue tracker](https://github.com/phoenix616/resourcepacksplugins/issues), [my IRC channel](https://irc.phoenix616.dev/), or [my Discord](https://phoenix616.dev/discord).

#####

*This resource is distributed without any warranty or liability by the author. Read more about it [here](https://github.com/Phoenix616/ResourcepacksPlugins/blob/master/LICENSE#L589-L610)*

VelocityReport

[![image](https://i.imgur.com/46IouRo.png)](https://github.com/Syrent/VelocityReport)
[![image](https://i.imgur.com/J9wNr1T.png)](https://modrinth.com/plugin/velocityvanish)
[![image](https://i.imgur.com/I5r8RZg.png)](https://modrinth.com/plugin/enhancedvelocity)
[![image](https://i.imgur.com/B4jL8Hr.png)](https://discord.gg/SW3NeujBmh)

## Easy to install
There isn’t that many usable Report plugin out there and there is an almost zero usable report plugin for Velocity networks. VelocityReport also supports multiple platforms like Spigot, Paper, Purpur, etc… as a back-end server.
## Feature packed
Everything you want and need from a report plugin for your Minecraft server is right here! There are a lot of features like BookGUI, different report stages, rewards, RGB/gradient/component messages, custom report reasons, and much more…
Also, there is a bunch of API methods and events that you can use to create addons for the plugin and add new features.
## Quality support
You’re able to [join our Discord](https://discord.gg/VZk2XU3kFg) and get help very quickly, up to instantly.
## Up to date
The plugin is not abandoned. It is constantly getting updated to fix reported bugs and get new optimizations that can help it run as smoothly as possible, whilst still doing what you want it to do.
## Multiple database types
You can use MySQL and SQLite as your database type.
## High performance
Unlike other plugins where “high performance” often means your CPU usage will be high, VelocityReport has an async database update that means there is no lag spike and high thread loads on your server.

VelocityQueue

# 🚀 VelocityQueue

Advanced Velocity queue plugin for Minecraft servers, featuring **NORMAL** and **PULL_ONLY** modes — built for events, streams, tournaments, and any controlled access scenario.

## ✨ Features

– Full queue system managed directly on the Velocity proxy
– **NORMAL** mode — players automatically connect when they reach position #1
– **PULL_ONLY** mode — only staff decides who gets in using `/pull`
– Position displayed in the **action bar** in real time
– **Throttled connections** to prevent network spikes and backend freezes
– `/pull` command to connect N players or a specific player
– Hot config reload with `/queue reload`
– Automatic update checker on startup

## 📋 Commands

| Command | Description |
|———|————-|
| `/pull [server]` | Pull N players from the queue to the server |
| `/pull ` | Pull a specific player from any queue |
| `/pull list [server]` | Display queue status |
| `/queue reload` | Reload the configuration without restarting |
| `/queue version` | Display the plugin version |

## 🔐 Permissions

| Permission | Description |
|————|————-|
| `queue.use` | Required to join the queue — give this to all players |
| `queue.admin` | Access to `/pull` and `/queue reload` commands |
| `queue.priority` | Bypasses the queue and PULL_ONLY mode, connects instantly |
| `queue.bypass` | Super admin — ignores the entire queue system |

## ⚙️ Configuration

“`yaml
# VelocityQueue — config.yml

servers:
event:
mode: PULL_ONLY # Staff controls who gets in
survival:
mode: NORMAL # Auto-connect when reaching position #1

pull:
connect-per-second: 5 # Number of connections per second (throttle)

messages:
queue-position: “&eYou are &6#%position% &ein the queue for &6%server%&e.”
queue-joined: “&aYou joined the queue for &6%server%&a. Position: &6#%position%”
pull-success: “&aYou have been pulled from the queue and are connecting to &6%server%&a.”
no-permission: “&cYou don’t have permission to do this.”
“`

## 📦 Installation

1. Download the `.jar` from the **Releases** tab
2. Drop it into the `plugins/` folder of your **Velocity** server
3. Restart Velocity — `config.yml` will be generated automatically
4. Configure your servers in `plugins/velocityqueue/config.yml`
5. Restart or run `/queue reload`
> ✅ No plugin needed on Paper/Spigot — everything runs on the proxy.

## 📌 Requirements

– Velocity 3.x
– Java 17+

## 🧠 Contributing

– Drop a ⭐ if the plugin is useful to you
– Suggest features or report bugs via **Issues**
– Follow the repo to stay up to date with new **Releases**

## 📧 Contact

For any question, idea or collaboration:
[email protected]

## ❤️ Credits

Plugin developed by **FreneDel**
Minecraft/Velocity developer — building proxy tools to improve server management and community experiences.

VelocityPteroPower

# VelocityPteroPower
![Static Badge](https://img.shields.io/badge/Velocity-green)
[![forthebadge](https://forthebadge.com/images/badges/works-on-my-machine.svg)](https://forthebadge.com)


buymeacoffee





Please join the Discord if you have questions or for support!

**Manage your game servers with ease!** VelocityPteroPower connects your Velocity proxy to Pterodactyl, Pelican Panel, or Mc Server Soft, allowing for dynamic starting and stopping of your game servers.

**For detailed information on configuration, commands, and permissions, please visit our [Docs Page](https://docs.pluginz.dev/).**

## Key Features
– **Multi-Panel Support**: Works with Pterodactyl, Pelican Panel, and Mc Server Soft.
– **Dynamic Server Management**:
– Automatically start servers when a player attempts to connect.
– Automatically stop idle servers after a configurable timeout.
– Manual control via commands (`/ptero start`, `/ptero stop`, `/ptero restart`).
– **Whitelist Integration**:
– Fetch and enforce server whitelists from Pterodactyl/Pelican panels.
– Reload whitelists on the fly with `/ptero whitelistReload`.
– **Efficient & Safe**:
– Respects panel API rate limits (Pterodactyl/Pelican/Mc Server Soft).
– Handles forced host connections, redirecting players to a limbo server.
– **Update Notifications**: Stay informed about new plugin versions.
– **Configurable**:
– Fine-tune server startup/shutdown behavior.
– Customize logging levels.
– Per-server settings for timeouts, join delays, and whitelist enforcement.

## Commands
– `/ptero start `
– `/ptero stop `
– `/ptero restart `
– `/ptero reload`
– `/ptero whitelistReload`
– `/ptero stopIdle`
– `/ptero forcestopall`

## Permissions
– `ptero.start`
– `ptero.stop`
– `ptero.restart`
– `ptero.whitelistReload`
– `ptero.reload`
– `ptero.stopIdle`
– `ptero.forcestopall`
– `ptero.bypass` (to bypass VPP whitelist checks if enabled)

## Installation
1. Download the latest `.jar` file from [Modrinth](https://modrinth.com/plugin/velocitypteropower).
2. Place the `.jar` file into your Velocity server’s `plugins` folder.
3. Restart your Velocity server.
4. Configure the plugin by editing `config.yml` in the `plugins/VelocityPteroPower` folder. **See the [Docs Page](https://docs.pluginz.dev/) for detailed configuration instructions.**

## Support
For issues, suggestions, or help, please [open an issue on GitHub](https://github.com/TubYoub/VelocityPteroPower/issues/new) or join our [Discord Server](https://discord.pluginz.dev).

## Contributing
Interested in contributing? Join our [Discord](https://discord.pluginz.dev) to discuss your ideas or submit a pull request!

## License
This project is licensed under the [MIT License]([https://github.com/Tubs-Pluginz/VelocityPteroPower/blob/dev/LICENSE).

[![forthebadge](https://forthebadge.com/images/badges/powered-by-black-magic.svg)](https://forthebadge.com)

VelocityPlus

VelocityPlayerListQuery

# VelocityPlayerListQuery

A Velocity plugin that shows current players in the server list.

Inspired by .

## Configuration options

| option | default | description |
| ————————– | ————- | —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————– |
| `playerListMode` | `”REPLACE”` | Configure how players are shown in the player list.

|
| `serverListEntryFormat` | `”%1$s”` | Configure how players are shown in the server list.

|
| `maxListEntries` | `16` | Configure how many players are shown in the server list. `<= 0` for unlimited (for backwards compatibility). | | `replaceOnlinePlayerCount` | `false` | Should the online player count be replaced with the number of players currently connected to Velocity? Useful when using `ping-passthrough = "all"`. | | `replaceMaxPlayerCount` | `false` | Should the maximum player count be replaced with the Velocity configured amount? Useful when using `ping-passthrough = "all"`. | | `fillMissingVersionInfo` | `false` | Should the version information be replaced with what is set in `versionProtocol` and `versionName`, when no version is detected? Useful when the backend server/s is/are unavailable or still starting. |
| `replaceVersionInfo` | `false` | Should the version information always be replaced with what is set in `versionProtocol` and `versionName`? Extends `fillMissingVersionInfo`. Useful when using `ping-passthrough = “all”`. |
| `versionProtocol` | `4` (= 1.7.2) | The protocol number to be set. You can find all available protocol versions at . Used by `fillMissingVersionInfo` and `replaceVersionInfo`. |
| `versionName` | `”Velocity”` | The version name to be set. Used by `fillMissingVersionInfo` and `replaceVersionInfo`. |

Velocity Parties

# Velocity Parties
**VelocityParties** is a powerful and fully customizable party system built for the Velocity Minecraft proxy. It allows players to create, manage, and communicate with parties seamlessly across your entire network.

> ⚠️ **IMPORTANT REQUIREMENT**
> If you want the **party chat toggle system (`/party toggle`) and mute system (`/party mute`) to work correctly**, you **MUST install the VelocityPartiesBridge plugin on all backend servers** (Spigot, Paper, Purpur, etc).
> Without the bridge plugin, toggle-based party chat along with mutes will NOT function properly.

> **You can download the Bridge plugin through the download button above, but select Paper/Spigot/Bukkit/Purpur as the server type.**

## Benefits of VelocityParties ✅
– Cross-server party system (Velocity-native)
– Auto leaving party after leaving the network (if they don’t rejoin after X amount of seconds defined in the config)
– Party chat with toggle support (`/party toggle`)
– Fully customizable (messages, formatting, filters, etc)
– Invite and request system
– Ability to promote, kick, mute, and ban players within a party
– Support for both online and offline player management
– Party warp system to bring members across servers
– Database-backed party storage
– Configurable chat filtering system
– Clean and intuitive command structure
– Designed specifically for scalable proxy networks

## Permissions ⚠
**`parties.use`** = should be given to **all players**

**`parties.admin`** = should be given to **admins/developers**

## Commands 🔨

| Command | Aliases | Description |
|——–|——–|————|
| `/party create` | — | Create a new party |
| `/party invite ` | `add` | Invite a player to your party |
| `/party accept` | `join` | Accept a party invite |
| `/party decline` | — | Decline a party invite |
| `/party leave` | `quit` | Leave your party |
| `/party disband` | — | Disband your party |
| `/party kick ` | `remove` | Kick a player from your party |
| `/party promote ` | — | Promote a player to leader |
| `/party mute [player]` | `silence` | Mute the whole party or a specific player |
| `/party unmute [player]` | `unsilence` | Unmute the party or a player |
| `/party ban ` | `block` | Ban a player from the party |
| `/party unban ` | `unblock` | Unban a player |
| `/party chat ` | `message` | Send a message to party chat |
| `/party toggle` | — | Toggle party chat |
| `/party warp` | `teleport` | Warp party members to your server |
| `/party list` | `members` | View party members |
| `/party kickoffline` | `removeoffline` | Removes all offline members from the party |

## Configuration ⚙

VelocityParties comes with multiple configuration files:

– `config.yml` – main plugin settings
– `messages.yml` – fully customizable messages
– `filter.yml` – chat filtering configuration
– `toggled.yml` – stores player toggle states

## Requirements 🔌

– Velocity proxy
– Java 17+
– **VelocityPartiesBridge (required for toggle chat support)**

## Why VelocityParties? 🚀

Unlike traditional party plugins, VelocityParties is built specifically for proxy environments, ensuring:

– Reliable cross-server communication
– Consistent party state across all servers
– High performance for large networks

## Contact
For suggestions, bug reports, or general help; https://discord.gg/v5hU7kBp2S

VelocityPacker

# Velocitypacker

[![Kotlin](https://img.shields.io/badge/Kotlin-2.0.20–Beta1-blue.svg)](https://kotlinlang.org)
[![Velocity](https://img.shields.io/badge/Velocity-3.4.0–SNAPSHOT-blue.svg)](https://velocitypowered.com)
[![SQLite](https://img.shields.io/badge/SQLite-3.45.0.0-yellow.svg)](https://sqlite.org)

A Velocity plugin that automatically sends resource packs to players and stores their acceptance status in a SQLite database.

## ✨ Features

– 🔄 **Automatic Resource Pack Sending** – Pack is sent on every proxy join
– 📊 **SQLite Database** – Persistent storage of acceptance status
– 🚫 **Smart Blocking** – Players cannot connect to servers until pack is accepted/declined
– ⚡ **Auto-Connect** – Automatic connection to first server after successful acceptance
– 🔒 **Session Management** – No re-sending when switching between backend servers
– 🎛️ **YAML Configuration** – 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. **Player connects to proxy** → Resource pack is sent immediately
2. **Server connection blocked** → Player stays in resource pack screen
3. **Pack accepted** → Automatic connection to first available server
4. **Pack declined** → Player is kicked (if configured)

### Server Switch Process:
– **Backend server switch** → No re-sending (stored in session)
– **Proxy rejoin** → Pack is sent again (new session)

### Database:
– **Location**: `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

– **Velocity API**: 3.4.0-SNAPSHOT
– **Kotlin**: 2.0.20-Beta1
– **SQLite**: 3.45.0.0
– **SnakeYAML**: 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

– **Resource Pack URL**: Must be a direct `.zip` download URL
– **No Server Switch Blocks**: Players can freely switch between backend servers
– **Session Cleanup**: 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! 🎮**