Easily set server resource packs on your whole Velocity network, per server or even per player!


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 World Resourcepacks plugin 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 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 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)
- 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 and ResourcePackSelectEvent 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, AuthMeVelocity, OpenLogin, NLogin, LibrePremium, JPremium. Do you need it to be compatible with more plugins? Contact me!
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 <name> <url>
- velocityresourcepacks.command.addpack
- Add a new pack
/vrp pack <pack>
- velocityresourcepacks.command.pack
- View and edit an existing pack
/vrp listassignments
- velocityresourcepacks.command.listassignments
- View all server assignments
/vrp deleteassignment <assignment>
- velocityresourcepacks.command.deleteassignment
- Delete a server assignment
/vrp assignment <assignment>
- velocityresourcepacks.command.assignment
- View and edit a server assignment
/vrp globalassignment
- velocityresourcepacks.command.globalassignment
- View and edit the global assignment
/resetpack [<playername>] [<temp>]
- 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.<packname>
permission or the one defined for the pack in it's config section!
/usepack
- List all packs available to you
/usepack <packname> [<playername>]
- 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 for an explanation on all options! (Some might only be available on the latest development builds!
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 and licensed under the GPLv3. Development builds can be found on the Minebench.de Jenkins. There are also some Javadocs if you intend to develop plugins based on mine.
Support
You can receive support in the resource discussion thread on PaperMC, the GitHub issue tracker, my IRC channel, or my Discord.