World Resourcepacks 1.8.5

Easily set server resource packs per world or your whole server!

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

    Did you ever want to set a different server resource pack for your each of your worlds? Or switch your current resource pack with just one command? Then you came to the right place!

    This plugin lets you set one Server Resource Pack for each of your worlds or event your whole server! It also allows you to specify packs that should be usable on multiple worlds!

    It is also compatible with my Bungee Resourcepacks plugin for the BungeeCord proxy and will not make the player redownload a resource pack after server switching if it got already applied by Bungee Resourcepacks on another server!

    Please always 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 before version 1.17 (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 react on whether or not the player downloaded the pack with a message, title or a straight up kick!
    It also includes PlaceholderAPI support!

    Note: This plugin does not work with older Minecraft versions that do not support server resourcepacks!

    • Set different server resourcepacks per world or whole server
    • Match world 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 world switch
    • Let the user set the pack himself. The pack can be re-applied on each login and will be used for resets in worlds 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 depending on the client's version (requires ViaVersion or ProtocolSupport) This is done by defining multiple pack variants with different minecraft version or pack format settings.
    • 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.
    Patreon with rewards: [​IMG]
    Ðoge: D7G4Svo7GTNHpuhjwUBj2k7qANnZHwYD4p
    BTC: 1EXMFRknc7kLwCmM1zf5LXNnPD4ihVCEhQ


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

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

    /wrp globalassignment - worldresourcepacks.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 worldresourcepacks.command.usepack permission!
    To execute it for other players you need worldresourcepacks.command.usepack.others!
    To have access to a specific pack a player needs the worldresourcepacks.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):
    debug: 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!
       # The sha1 hash of the resourcepack's zip file,
       # Not supported by bukkit so it currently does not matter what you write here!
    : 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: worldresourcepacks.pack.<packname>
    : false
       # If you want you can define a specific permission for this pack if you don't want
       # the default worldresourcepacks.pack.<packname> permission!
    : worldresourcepacks.pack.lobbypack
       # 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
    : 012345678abcdef012345678abcdef012345678a
    : '1.15'
        - url
    : 012345678abcdef01234567dddcdef012345678a
    : '1.12'
    # Empty pack to reset the pack to the default one
    : 01517226212d27586ea0c5d6aff1aa5492dd2484
    : lobbypack
      # 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 world
    : 10
    : lobbypack
        #- gamepack
    : gamepack
        # Use a regex to target all worlds 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!
    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 and 1.15 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.
    Dev builds can be found on the Jenkins.
    There are also some Javadocs if you intend to develop plugins based on mine.

    This resource includes 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. SytheX
    Version: 1.8.5
    this plugin is like a decoration, has a lots of commands in theory, but does nothing in practice.
  2. Stylbay
    Version: 1.8.5
    Hello, the plugin work perfectly but i have a little problem. The pack "p1" is only on the world "w1", but, when i go to the world "w2" , the pack "p1" does not remove automatically . Can you help me please ?
    1. Phoenix616
      Author's Response
      That sounds like an issue with your config. Please provide your config and log files in the support thread or the discord/irc if you require help.
  3. TheRealMC12
    Version: 1.8.5
    Hi, I put two resource packs into the config file, but an error came up when my server was loading. Could someone please help?
    Here it is:
    [13:25:17 ERROR]: Cannot load plugins\WorldResourcepacks\config.yml
    org.bukkit.configuration.InvalidConfigurationException: while parsing a block mapping
    in 'string', line 1, column 1:
    debug: false
    expected <block end>, but found '<block mapping start>'
    in 'string', line 35, column 2:

    at org.bukkit.configuration.file.YamlConfiguration.loadFromString( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.configuration.file.FileConfiguration.load( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.configuration.file.FileConfiguration.load( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at de.themoep.resourcepacksplugin.bukkit.WorldResourcepacks.loadConfig( ~[?:?]
    at de.themoep.resourcepacksplugin.bukkit.WorldResourcepacks.onEnable( ~[?:?]
    at ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.DedicatedServer.init( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.w( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at [?:?]
    Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
    in 'string', line 1, column 1:
    debug: false
    expected <block end>, but found '<block mapping start>'
    in 'string', line 35, column 2:

    at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.yaml.snakeyaml.composer.Composer.composeNode( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.yaml.snakeyaml.composer.Composer.getNode( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.yaml.snakeyaml.composer.Composer.getSingleNode( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.yaml.snakeyaml.Yaml.loadFromReader( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.yaml.snakeyaml.Yaml.load( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.configuration.file.YamlConfiguration.loadFromString( ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
    ... 16 more
    1. Phoenix616
      Author's Response
      You should post any errors in the discussion thread or on the issue tracker... anyways, you have an error in your config.yml, without knowing the config that's hard to debug. I suggest putting it into an online yamlint tool for more details.
  4. wowidklol
    Version: 1.8.2
    This plugin is good, but I want to know if it can support geyser? I am trying to let players of Bedrock Edition join my server through geyser, but it seems that the texture pack is not installed successfully for Bedrock Edition.
    1. Phoenix616
      Author's Response
      Unfortunately it is impossible to switch the server resource pack after login in Bedrock. Also it would be Geyser's job to translate the api calls/packets, please contact them about that.
  5. DreamMiu
    Version: 1.8.2
    The plugin is very good, is there any software or website that can modify the resource pack
  6. PR0XYGh0ST
    Version: 1.8.2
    sending the wrong rp to the client
    also mentioned the issue on GitHub.
  7. byteboost
    Version: 1.8.2
    Works great in 16.3 without any issues. Thank you!
  8. steve4744
    Version: 1.7
    Working perfectly on 1.16.1. Pack changes automatically when I switch worlds, and switches back to the default when I return to the lobby.
    Thanks for keeping this plugin updated.
  9. Lementin
    Version: 1.7
    Not working. Packs won't load automatically. However packs can be used via commands.
    1. Phoenix616
      Author's Response
      That should work when setup correctly. Can you please provide your config and server log in the discussion thread or a pm? :)
  10. hyenagodking
    Version: 1.7
    It doesn't work. I'v set it up and the resource pack doesn't load into the game.
    1. Phoenix616
      Author's Response
      This is most likely an issue with your setup, not with the plugin itself.
      If you have issues then please post in the discussion thread or github issue tracker while including your server log, config and description of the error.