Bungee Resourcepacks

Easily set server resource packs on whole BungeeCord and per server

  1. Phoenix616
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    • 1.17
    Source Code:
    [​IMG] Made in Germany with love (and beer)


    Did you ever want to set one Server Resource Pack for your whole BungeeCord network? Or set a different pack for a couple of your servers behind your Bungee 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 BungeeCord 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 Bungee 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 Bukkit 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 100MiB! (50MiB before 1.15, 250MiB starting 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!)

    For an enhanced version of this plugin take a look at Force Resourcepacks!
    It lets you require a resource pack and react on whether the player downloaded the pack or not with a message, title or a straight up kick!
    It also includes PlaceholderAPI support!

    In order for this plugin to work it hooks into internal Bungee code, this might result in issues if there is a Bungee update which changes its internal structure. I will try to keep the plugin working as well as possible (I use it myself after all) but if you believe that something broke without a plugin update being available please contact me asap!

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

    • Set different server resourcepacks per server or whole BungeeCord network
    • 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
    • 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.
      Do you need it to be compatible with more plugins? Contact me!
    • Need more features like kicking when the player rejects the pack? Take a look at Force Resourcepacks!
    Programming is time intensive and I would really appreciate your support!
    So if you can afford it or make commercially use of this plugin feel free to buy me a beer.

    Find links to Patreon, GitHub sponsors or to directly send me money here.


    To execute every /brp command you need the bungeeresourcepacks.command permission!
    /brp reload [resend] - bungeeresourcepacks.command.reload
    - Reloads the config file; resends the packs to every online player if the 2nd argument is "resend"

    /brp version - bungeeresourcepacks.command.version
    - Shows the version of this plugin
    /brp generatehashes - bungeeresourcepacks.command.generatehashes
    - Manually generate the resource pack hashes
    /brp addpack <name> <url> - bungeeresourcepacks.command.
    - Add a new pack
    /brp pack <pack> -
    - View and edit an existing pack
    /brp listassignments - bungeeresourcepacks.command.listassignments
    - View all server assignments
    /brp deleteassignment <assignment> - bungeeresourcepacks.command.deleteassignment
    - Delete a server assignment
    /brp assignment <assignment> - bungeeresourcepacks.command.assignment
    - View and edit a server assignment

    /brp globalassignment - bungeeresourcepacks.command.globalassignment
    - View and edit the global assignment

    /resetpack [<playername>] [<temp>] - bungeeresourcepacks.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 <temp> is set to false the stored pack of the player is reset too.

    To execute every /usepack command you need the bungeeresourcepacks.command.usepack permission!
    To execute it for other players you need bungeeresourcepacks.command.usepack.others!
    To have access to a specific pack a player needs the bungeeresourcepacks.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
    Code (YAML):

    : true
    # Default language
    : en
    # Disable all metrics included in this plugin.
    : false
    # Whether or not resourcepack file hashes should be generated on startup:
    : true
    # Whether /usepack should apply packs temporary or permanent when run without any argument:
    : true
    # Whether packs that a player has stored will override a matched assignments
    : false
    # When manually setting a permanent pack then it will be reset if the user disconnects in under x amount of seconds.
    # 0 or anything below will disable this functionality
    : 30
      # The url the client should download the resourcepack from.
       # Has to be a direct download link! No mediafire/mega/other oneclick-hoster!
    : http://example.com/lobbyresourcepack.zip
       # The sha1 hash of the resourcepack's zip file,
       # if not correct the client will waste bandwidth but it will still work!
       # At least that's what the Minecraft wiki says... (Site: Server.properties#Minecraft_server_properties)
    : abcdef012345678abcdef012345678abcdef0123
       # The format version of this resourcepack
    : 1
       # Directly define the Minecraft version instead of the format
       # Supports string representation of the versions and protocol numbers
       # You don't need to define both the version and the format (if so then the highest one will take effect)
    : "1.8"
       # Whether or not this pack will only be send to players with a certain permission
       # permission: bungeeresourcepacks.pack.<packname>
    : false
       # If you want you can define a specific permission for this pack if you don't want
       # the default bungeeresourcepacks.pack.<packname> permission!
    : bungeeresourcepacks.pack.lobbypack
    : http://example.com/globalpack.zip
    : abcdef012345678abcdef012345678abcdef0123
       # Set different variants e.g. for different versions or permissions
        # This list supports all normal pack settings and is checked top to bottom.
        # The first one that matches the player will be used.
        - url
    : http://example.com/minigameresourcepack_1_15.zip
    : 012345678abcdef012345678abcdef012345678a
    : '1.15'
        - url
    : http://example.com/minigameresourcepack_1_12.zip
    : 012345678abcdef01234567dddcdef012345678a
    : '1.12'
    # Empty pack to reset the pack to the default one
    : http://cdn.moep.tv/files/Empty.zip
    : 01517226212d27586ea0c5d6aff1aa5492dd2484
     # Define a global pack:
    : globalpack
      # List of packs to not replace if the user already has them
      # If no main pack is set the first one also gets used to reset
      # the pack if the user has a non secondary one
      # Also this list will be used to select a pack if a user does not have the permission
      # or the right version to use that pack. (From top to bottom)
     - lobbypack
      # Delay in ticks before sending the pack to a player after he logs in/switches to the server
    : 20
    : lobbypack
       - gamepack
    : gamepack
        # Use a regex to target all servers with a certain name
    : 'minigame_.*'
    Warning: This config might not always be up to date, please make sure to reference the one from the GitHub repo, especially when using development builds!

    Use this simple guide to find the sha1 hash of your resource pack's zip file.
    About the client freeze
    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. There's not a lot I can do about that offer than advice people to
    put pressure on Mojang to improve that behaviour.

    1.14,1.15 and 1.16 have some major improvements there so suggest players to use these if they have issues with your server resourcepack!
    The source is available on GitHub and licensed under the GPLv3.
    Development builds can be found on the Minebench.de
    There are also some
    Javadocs if you intend to develop plugins based on mine.

    This resource includes bstats.org metrics. If you don't want bstats to collect info on your server then you can disable it in the bStats/config.yml file. The license the used bStats-lite class is under can be found here.​

    Other Resources

    This resource is distributed without any warranty or liability by the author.

Recent Reviews

  1. Vlad54
    Awesome plugin. I have overused a lot of plugins, but all of them do not have the ability to send a resource pack to a player as a team. This is a very useful function for me because I install the Resource-pack in the lobby and then the player, after installing the resource-pack, enters the mini-mode. Suitable.
  2. celcius
    Version: 1.8.5
    I love this plugin, now i am using in Server MMORPG, I really would like a command to send the resource pack to a single player and not to all like the / brp reload resend does, thank you very much
    1. Phoenix616
      Author's Response
      That's possible with the "/usepack <pack> <player>" command :)
  3. Delta_Minecon
    Version: 1.8.2
    It isn't working. The plugin is loading but the doesn't ask for the resourcepack.
    1. Phoenix616
      Author's Response
      I'm sorry to hear that you are having issues. Please provide information like your log and config in the offered discussion/support places.
  4. MCVantage
    Version: 1.8.2
    Doesn't work in 1.16.4. Crashes everyone upon entry, and even a clean restart doesn't work
  5. czMarv
    Version: 1.7
    Good plugin and even better developer :D .
  6. Deathril
    Version: 1.7
    This plugin is amazing. Previously, I did not know how to set up and it was really vague on how it works because there's no step by step guide on how this works, but after figuring it out and giving it another try.. I love this plugin. Sorry for the previous bashment, but if you are having trouble, there is a solution!

    Thanks for the awesome plugin. :)
  7. Sun_Light
    Version: 1.7
    Good plugin ! Searching a plugin like kind of this for sooooo long !This is definitely what i looking for!Keep the good work
  8. Battlevali
    Version: 1.6.14
    This plugin is amazing, the developer is very helpful.

    Phoenix616 is one of the best developer on spigot.
    - Huge thanks for this.
    - Its working flaweless.

    I absolute suggest everybody to try out his plugins.
  9. GarethPW
    Version: 1.6.14
    Great plugin. Fairly straightforward to configure and is a much better system than using server.properties!
  10. minez
    Version: 1.6.14
    Very cool plugin, thank you have been looking for such a plugin. As soon as I save up, be sure to buy your other plugins. Thank you!