Force Resourcepacks icon

Force Resourcepacks -----

[1.8-1.21.4] Send resourcepacks globally/per server/world. Execute actions! Spigot, Bungee&Velocity




  • Fixes an issue where specifying multiple packs would lead to no packs being sent if any of the packs was not applicable to the player receiving the pack (e.g. when a permission wasn't granted for a restricted pack)
  • Fixes that the default language file wasn't saved properly on Velocity
  • Fixes potential issues when running the plugin on Paper 1.20.5 or later
----------, Dec 7, 2024

  • Update to support 1.21.4 on BungeeCord proxies
  • Added checking of URLs of packs for validity as a resource pack URL.
    URLs to Google Drive and Mediafire are now blocked as they will not reliably work, Dropbox will cause a warning.
    You should use your own web server or alternatively a host like mc-packs.net to ensure that your packs work for everyone and without issues in the future.
----------, Dec 3, 2024

  • This adds a new feature (toggleable with accept-forwarded-bukkit-events) which allows working around the Velocity behaviour of not allowing the resource pack status packet to reach the Minecraft server behind the proxy.
    With the feature enabled the PlayerResourcePackStatusEvent will be called on a Spigot server even when it is behind a Velocity proxy allowing other plugins to detect that a pack was loaded (or not) without relying on FRP's events.
    This makes it behave the same way as running FRP on BungeeCord.
  • Preparations for the 1.21.4 update were done (a version constant and pack format mapping) which might make the update work directly without any additional changes on Spigot and Velocity (BungeeCord will still need an update of the plugin)
----------, Dec 1, 2024

  • This adds support for 1.21.2/3 (this update is only really necessary on Bungee or if you want to use 1.21.2/3 as the version for a pack)
----------, Oct 24, 2024

  • This fixes a bug on Velocity introduced with the configuration phase support where old clients would only get sent the first pack and not any further packs when switching a server when the send-delay was unset or set to 0.
----------, Jul 2, 2024

  • Fixes issues with sending packs in the Configuration Phase on Velocity
  • Allow pack (variant)s to have duplicate urls, hashes and uuids. Now only a warning is printed. (There might be issues with detecting which pack was sent in some special cases e.g. when the backend Minecraft server sends a pack in certain cases though so be aware of that. Ideally you should not be running such a setup hence why it is a warning!)
----------, Jun 28, 2024

  • This adds support for sending packs in the configuration phase which was added in 1.20.x on Velocity. This means that packs can be sent before the player actually joins the server!
    In order to enable that make sure your send-delay is set to 0 or not defined! (And if you have issues with it set it to 1 or a higher value. Please report those to me too as the API is extremely new!)
    This update requires Velocity build 399 or newer! There is no support for older Velocity versions!
  • Support for this on Spigot & Bungee will follow at a later date once they have API or I can figure out a good way to do that without API
----------, Jun 20, 2024

  • Added pack formats and protocol versions for 1.21
  • Fixed compatibility with ViaVersion 5.0 on Bukkit-based servers
----------, Jun 14, 2024

  • Added 1.20.5 version and pack format 32 support
----------, Apr 23, 2024

  • Fix an issue with running the plugin on a 1.8.8 server leading to FRP not being able to detect the protocol version leading to pack formats not working properly
  • Fixes that subtitles show the title on Velocity
----------, Apr 15, 2024

  • Fix that the stored-packs-override-assignments config option did not lead to the stored pack overriding any other assignments for 1.20.3+ clients
  • Fix a possible NullPointerException in certain cases
----------, Apr 3, 2024

  • Fix that the user's pack(s) weren't communicated properly between the proxy and the Minecraft server if the plugin was installed on both leading to packs getting reset or not getting sent at all when they shouldn't
  • Update to new Velocity resource pack API and fix exception related to it
----------, Feb 26, 2024

  • This fixes an error that causes the pack not getting sent properly again after the player timed out (and potentially in other cases)
  • Improve compatibility with future Spigot versions
----------, Feb 7, 2024

  • Fix a possible NPE when a server behind a BungeeCord proxy tries to remove a pack unknown by FRP
  • Fix PackActionAssignments missing the packs list when displayed as strings in debug messages
----------, Jan 29, 2024

  • Fix multiple packs not properly applying when running the plugin on certain Spigot-forks
  • Reduce the executor timeout on shutdown to 2 seconds from 10 when running the plugin on Spigot
  • Fix a case where the packs list was written in a wrong way when saving the config
----------, Jan 26, 2024

  • Fix /usepack adding packs instead of overriding existing ones in 1.20.3+ (now works the same way as before again)
  • Fix /resetpack command adding the pack if one was stored instead of replacing existing ones like before on 1.20.3+.
  • Changed the communication between the proxy and backend servers to improve maintainability and security.
    There is now a key required on the Minecraft side for the information forwarding to work. This should be generated and populated automatically on first join through the proxy but you can also manually define it in the key.yml file on the key as a string.
    (If you don't run a proxy then the file should automatically be set to key: "" the second time any player joins which means no plugin messages are accepted. Of course you can prepopulate it with that value.)
  • 1.12.6.1 hotfix: Fix automatic key generation on Bungee
----------, Jan 15, 2024

  • Unifies how pack statuses are forwarded in a proxy network. Now any combination of Spigot + BungeeCord/Velocity sending packs in both directions should also forward all statuses between the other plugin if FRP is installed on both.
    This means that actions are now executed on the Minecraft server as well as the proxy at all times! (Previously only some were executed based on the combination)
    Please test your setups if you use actions on both Spigot and the proxy to see if this impacts you!
    If you do run into issues then I suggest testing out the pack-actions added in the 1.12.0 update. With them you should be able to properly specify which pack should cause which action to run.
  • Fixed that the UUID wasn't properly read when running FRP on Bungee and a backend server sent a pack (via plugin or server.properties) which would cause a packet reading error.
    Please note that running ViaVersion on the proxy might still break it. Move them to the Spigot server for best compatibility!
  • Fixed packs not being (easily) removable when sending them from Velocity due to missing UUID in resource pack packet.
  • Fixed new statuses causing errors on Velocity and generally unified how pack statuses were parsed from packets/platform-dependent API methods to avoid such error s in the future
  • Fixed that running the plugin on an outdated Velocity would print a non-descriptive error. It now prints a proper error message indicating that at least Velocity 3.3.0 is required.
    I thought about including a large ASCII sign in the log message but decided against that. But if anyone needs one, here it is (licensed under CC0)
----------, Jan 2, 2024

  • Fixes issues with the pack status (a possible NPE when no/an unknown UUID is sent as well as a different behaviour between Velocity and the other platforms)
  • Changes the Bedrock-client detection so that it will always use the Geyser or floodgate APIs if they are installed. It will only fall back to checking for an XUID if neither of them are installed.
----------, Dec 28, 2023

  • Fix error when trying to load certain config values on latest Velocity (please note that since 1.12.1 only Velocity 3.3.0 is supported!)
  • Add workaround for Velocity not supporting pack removal yet. This requires FRP to be installed on both Velocity and the backend Spigot server! (Just configure the same packs and the ones you want to not be removed on that particular server as global optional-packs
  • Fix FRP not properly hooking into ViaVersion when used on Velocity
  • Revert rename of subcommand getpack to keep language files and permissions working like before. getpacks is now an alias of that sub command but not the main name.
----------, Dec 23, 2023

  • Fixes "pack removal not supported" error on Spigot 1.20.3/4
  • Use new pack removal API on Spigot 1.20.4 when using a build where it is available
  • Add more startup debug regarding the internal server version
  • More improvements for 1.20.3+ multi-pack support
  • Improve handling of old packets getting sent when running on BungeeCord
  • Updated to use the new Velocity 3.3.0 config API (not compatible with Velocity 3.2.x!)
----------, Dec 13, 2023

  • Fixes issues with 1.20.3/4 in some cases when running on BungeeCord
  • Fixes some multi-pack related issues (especially with pack variants)
  • Added per-pack status PlaceholderAPI placeholders (%frp_status_<pack>_<status>%)
  • Enforce uniqueness of pack UUIDs
  • Fixes an issue with the WorldGuard integration which would cause an error log on join
----------, Dec 11, 2023

  • This update adds support for 1.20.3/4 on BungeeCord and Spigot (Velocity will follow once their resource pack API is done)
  • Notable for networks: With 1.20.3+ clients the issue where the pack will get resent on every server switch is fixed!
  • Added the ability to specify the pack uuid. If it's not set it will be automatically be created based on the pack name.
  • Add ability to specify multiple global and per-world/server packs to be applied at the same time for 1.20.3/4 clients.
    This uses the new packs config option which can be added to both global or per-world/server assignments.
    Clients before 1.20.3 will apply only the first pack in that list so you need to use per-version pack variants if you want to support both!
  • On 1.20.3+ clients packs are now directly removed instead of using the empty pack.
  • Added support for the new 1.20.3+ resource pack statuses (only used when the player uses a 1.20.3+ client!):
    DOWNLOADED: The player finished downloading the pack
    INVALID_URL: The URL provided wasn't valid
    FAILED_TO_RELOAD: The client failed to (re)load the applied pack
    DISCARDED: The client decided to not do anything with the pack (e.g. the same version was applied already)
  • Added the ability to specify status actions per-pack with the new pack-actions and first-join-pack-actions config sections for the global and per-world/server assignments. (See the default config for more info)
    This can also be modified via commands:
    /frp [globalassignment|assignment <assignment>] ...
    addpackaction <status> <action> <value>
    removepackaction <status> [<action>]
    addfirstjoinpackaction <status> <action> <value>
    removefirstjoinpackaction <status> [<action>]

Please note that due to the large changes required to make multi-packs work there might be some issues! Please make sure to report those either on the issue tracker or on Discord!
----------, Dec 10, 2023

  • Fix a bug that caused the first-join-actions to not work on BungeeCord proxies. (Make sure that you enable store-joins if you want this functionality!)
----------, Nov 28, 2023

  • This update adds support for JPremium on Velocity
PS.: This is build number 666
----------, Nov 15, 2023

  • This adds the missing packet id for the ResourcePackSendPacket in the 1.20.2 configuration phase to the packetmap.yml file
----------, Oct 8, 2023

  • Updated to work with latest BungeeCord builds (these are required for it to work as backwards compatibility in this case is harder to do and doesn't make sense with BungeeCord in the first place as it supports all versions down to 1.8. If in a couple weeks you have an actual compelling reason to need this then please contact me)
  • Fixed a potential timing issue when sending a resource pack on BungeeCord
----------, Sep 26, 2023

  • Work around MC-265463 removing the pack on BungeeCord when switching servers. This unfortunately means that the pack will get loaded again on each server switch (until I can find a better solution)
----------, Sep 23, 2023

  • Updated to be compatible with 1.20.2 (version, pack format)
  • Adds support for Configuration phase resource pack packets in BungeeCord and works around an issue with packet send timings there
----------, Sep 22, 2023

  • Added forwarding of all pack statuses to the backend server when running behind a proxy (when using the API the FRP
    ResourcePackStatusEvent
    should be used instead of the Vanilla one)
    This also means that all actions configured in FRP on the backend server are now properly executed.
  • Fixed an issue that prevented integrations with certain auth plugins to work properly when used together with a proxy
  • Added more debugging for when a pack isn't sent
----------, Sep 19, 2023

  • Fix multiple commands not getting executed when switching worlds/servers after declining (you can define multiple commands as a list for the console_command and player_command actions)
----------, Jul 20, 2023

  • This update fixes an error when trying to hook into LibreLogin
----------, Jul 12, 2023

  • Add frp_status to return the player's resource pack status
  • Add frp_status_<statusname> which returns true or false depending on whether the player has that specified status
  • Add frp_pack_<packname> which returns true or false depending on whether the player has that specified pack
Please note that PlaceholderAPI placeholders are only available on the Spigot server, not any proxy!
----------, Jul 2, 2023

  • Add debug message to auth triggering
  • Fix that pack might get sent twice or not at all on proxies after authenticating
  • Fix that AuthMe didn't sent pack after initial registering
  • Add support for AuthMeVelocity 4.x forwarding instead of installing FRP on the backend server
  • Update to support latest LibreLogin
----------, Jun 20, 2023

  • Update the LibreLogin hook to work with the changes done in 0.16(.2) (Versions before 0.16 are not supported anymore!)
  • Better handle when a hook into a dependency fails to load properly. It will now only print an error and not prevent the whole plugin from enabling.
----------, Jun 11, 2023

  • Added 1.20 version constant for config usage
  • Added pack format 15 support
If you don't need per-version packs then an update is not necessary. The plugin already works on 1.20.
----------, Jun 7, 2023

  • Added support for 1.19.4 on BungeeCord (other platforms already work)
  • Added 1.19.4 version constant for pack configs
  • Added new pack format 13 for pack configs
  • Fixed a potential issue with the WorldGuard integration not enabling properly
----------, Mar 14, 2023

  • Added ability to auto-generated hashes of local pack files via the local-path pack config option. This is experimental!
  • Support LibreLogin (formerly LibrePremium)
  • Update ViaVersion, Geyser and Floodgate dependencies.
----------, Mar 7, 2023

  • Makes placeholders in the (send) actions work on switch:
    • %source% for the source server the player was on
    • %target% for the original target server
  • Uses the global assignment if no per-server one is defined on switch
  • Adds more log messages for switches
----------, Jan 14, 2023

  • Fixes potential issues that prevented the LibrePremium and JPremium integrations from loading on Bungee and Velocity
----------, Dec 19, 2022

  • This update adds support for 1.19.3 clients when running the plugin on BungeeCord
----------, Dec 12, 2022

  • Added pack format 12 for 1.19.3 (Please note that at the moment 1.19.3 clients do not work when using the plugin with BungeeCord!)
  • Added a new config option append-hash-to-url which is enabled by default to work around MC-164316 by appending the hash to the end of pack URLs automatically. Without this the client might not re-download a pack that was changed but with the same URL.
----------, Dec 7, 2022

  • Fixes some possible errors that could happen on a BungeeCord proxy when the player wasn't connected to a backend Minecraft server yet
  • Fixes some errors in the default English language file
----------, Nov 23, 2022

  • Fixes cases where joins were (erroneously) detected as first-join when store-joins wasn't enabled. Now is is required to be enabled on proxies if one want's first-join-actions to work!
  • Fixes a potential memory leak with lots players joining for the first time.
----------, Nov 10, 2022

  • Fix issues with status order detection under Velocity
----------, Nov 7, 2022

  • Support added for LibrePremium and JPremium authentication plugins
  • Rework some internal code regarding auth to make it more modular and maintainable
----------, Oct 2, 2022

  • Fix rejection/failed actions not running on Minecraft server if the plugin was used on the proxy too
  • Only allow kick, send and command actions to be bypassed with permissions
----------, Oct 1, 2022

  • Adds 1.19.2 as a version constant. Please note that 1.19.1 and 1.19.2 share the same protocol version! It is not possible which version the client is actually using!
  • Improved the detection of the Minecraft server's protocol version if the plugin is installed on a Bukkit-based server.
----------, Aug 21, 2022

  • Added support for 1.19.1 when running the plugin on BungeeCord
  • Fixed an issue where one couldn't specify the protocol number directly for the pack version or in the packetmap.yml
----------, Jul 28, 2022

  • Fix issues with 1.19 Clients on Bungee
----------, Jun 8, 2022

  • Support for 1.19 and pack format 9
  • Add a new example pack to the default config
----------, Jun 7, 2022

  • Allows disabling of the prompt timeout by setting prompttimeout to 0 or below in the config.
  • Fixed that the %frp_pack% and %frp_pack_<pack>_online% placeholders included packs that were requested but not loaded by a player yet (while they were in the prompt screen). This state will now be counted correctly as that they don't have the pack (empty).
----------, May 27, 2022

  • Fix issues with /frp reload resend like not resending the pack and some other internal data not getting properly reset
----------, May 1, 2022

  • Fix resetting the pack with the empty one on server/world switch not working
----------, Apr 25, 2022

  • Fixed that the WorldGuard flags weren't able to properly pick up that a pack was sent to the player on another server.
  • Fixed an exception that could occur on Bungee if another plugin was sending a resource pack without a hash with the plugin API from an older Spigot server
----------, Mar 11, 2022

  • Fix a bug that would cause optional packs (called secondary in the past) to not load properly. (old configs with "secondary" should still work)
----------, Mar 1, 2022

  • Add 1.18.2 support
1.11.16.1 hotfix:
  • secondary was replaced with optional-packs in the configs in 1.11.16. Old configs with secondary as well as the add-/removesecondary sub commands will continue working but this hotfix adds this change to the default configs and updates the resource documentation with the new command syntax.
----------, Feb 28, 2022

  • Fix that the "failed" status was not accepted after "requested"
  • Fix a NoSuchEleemtnException when a player wasn't connected to any server yet
  • Fix issues with nLogin/OpeNLogin hook not loading properly
----------, Feb 16, 2022

  • Update to nLogin v10 api
  • Add native nLogin support on Bungee and Velocity when installed there
  • Fix use-auth-plugin config option not being reloadable on Bukkit-based servers
  • Fix AuthMe/OpeNLogin status not being forwarded from the server when use-auth-plugin is disabled there but enabled on the proxy
  • Fix send-delay not being applied after authentication
----------, Jan 24, 2022

  • Adds the 1.18.1 version constant as well as proper detection when running on Spigot without ViaVersion/ProtocolSupport
  • Fixes the wrong_version and no_permission statuses not triggering actions when the only-run-actions-after-pack-send config option is enabled
----------, Dec 16, 2021

  • Update to the 1.18 release (release protocol version support for variants)
----------, Nov 30, 2021

  • This fixes potential issues with hooking into the OpeNLogin and nLogin authentication plugins
This update would've been more fun to release on Nov 11th :S
----------, Nov 22, 2021

  • Adds support for Bungee/Spigot 1.18 pre 5 (pack version 1.18 and format 8)
  • Fixed a bug that prevented a pack from getting sent if a format/version was specified but the server couldn't determine the client version (e.g. on Spigot without ViaVersion installed). Before it would silently fail, now it just sends the first matched pack ignoring the version.
----------, Nov 22, 2021

  • Add nLogin support as requested here. (Apparently its API is different from OpeNLogin...). Requires the plugin on the Spigot server if you want the login functionality to work with the proxy (there doesn't need to be any packs/actions defined on the Spigot server, just the use-auth-plugin option enabled)
  • The config option for authentication plugins has been renamed from useauthme to use-auth-plugin to better represent the current functionality. (Of course configs with the old option will still work!)
----------, Nov 21, 2021

  • This update adds OpeNLogin support. (Uses the same config option as AuthMe: useauthme). Requires the plugin on the Spigot server if you want the login functionality to work with the proxy (there doesn't need to be any packs/actions defined on the Spigot server, just the useauthme option enabled)
----------, Nov 14, 2021

  • This adds the config option only-run-actions-after-pack-send to toggle whether or not actions should always run or only after the plugin sent a pack itself (or detected another pack getting sent from behind a BungeeCord)
----------, Jul 28, 2021

  • Automatically create the joined.yml config file when using the store-joins config option on the proxy (velocity/bungee).
----------, Jul 17, 2021

  • Fix that the MineDown formatting syntax wasn't working in kick messages when using the plugin on Spigot based servers
  • Updated MineDown library to latest version to support negating formatting with !<format> in events e.g. [Italic text [non italic](!italic) italic again](italic).
----------, Jul 14, 2021

  • This fixes a bug in the plugin building process which lead to the plugin not being able to load on Spigot-based servers due to missing library classes
  • Add 1.17.1 version constant
----------, Jul 7, 2021

  • This fixes a case where a pack would get sent again from the Minecraft server when switching to it from another one even when the player already had the pack which occurred if the information was sent before the player was actually connected to the target server. Please make sure that you have the same plugin version running on the Proxy and the Minecraft server!
  • Added a debug message when the player failed to apply the pack
  • Fix a potential issue detecting backend packs based on their URL
----------, Jun 28, 2021

  • Add support for Spigot 1.17
  • Made compatible with some changed BungeeCord internals regarding packet registration starting with BungeeCord build 1580
----------, Jun 11, 2021

  • Added 1.17 support for BungeeCord/Velocity. (Spigot might work when it releases but I can't test that yet.)
  • Added new required option to assignments which makes it so that the player can only disconnect on 1.17 if enabled. Also forces the prompt to show up again if they declined it before. (can be bypassed with the forceresourcepacks.bypass.required or forceresourcepacks.bypass.<assignment>.required permission)
  • Added new prompt-message option which adds a configurable message to the 1.17 resource pack prompt screen
  • Fix editing of the global assignment via commands not saving to config
Yes, 1.11.0 does not have an update note due to a bug with old config files which was quickly fixed.
----------, Jun 8, 2021

  • This update removes the fallback of the wrong_version and no_permission statuses to the declined actions. This has been the root of lots of confusion in the past and isn't exactly how most people would want those to behave anyways.
    If you need actions for the wrong version or when the player has no permission then make sure to set them explicitely now!
  • Fixes that Geyser wasn't detected properly on BungeeCord
----------, May 14, 2021

  • Fixes an exception when any action that sends a message is sent while using the plugin under Velocity. (The used MineDown library was relocated in a conflicting way in one of the upstream dependencies)
----------, May 8, 2021

  • This fixes that the plugin will not load with Velocity if any of its optional soft dependencies are missing
----------, May 8, 2021

  • This makes the plugin compatible with the changes in the ViaVersion 4 development builds
  • Add a context (resourcepackstatus) for LuckPerms which contains the status of the last resource pack sent. The most useful values are probably "accepted", "loaded", "declined" and "failed". See the full list here.
----------, Apr 30, 2021

  • This update adds basic support for Bedrock through Geyser/Floodgate (ideally either Geyser or Floodgate are installed directly on the server, otherwise only non-linked Bedrock clients can be detected).
    ForceResourcepacks will no longer try to send Java resource packs to those clients or run any of the timeout/declined etc. actions for them and the commands will handle Bedrock "properly" (by not listing packs and sending an error when trying to set the pack of a Bedrock player).
    If you want server resource packs to work under Geyser then you will need to use their config options for that. Unfortunately Bedrock clients do not allow sending new server resource packs after the initial join and Geyser does not offer API for specifying the packs so this plugin's config can (currently) do nothing to influence Geyser's setup regarding server resource packs.
----------, Apr 19, 2021

  • This adds a command /frp removepack <pack> to remove packs
----------, Apr 1, 2021

  • This update stops packs from resending if the player declined them previously in the same session. This stops an issue which triggered actions on every world switch after rejecting the pack.
    From now on any action in a matching world-specific assignment will still be run when switching to that world, but actions of the global assignment will not.
    So if you only want actions to happen on first pack sent then configure them in the the global assignment, not the per-world one.
----------, Feb 9, 2021

  • This adds 1.16.5 support by adding the version constant for it. It will now be correctly detected on a Spigot server as well as be usable as a version in a pack's version setting.
----------, Jan 16, 2021

  • This update fixes an issue on Velocity which prevented packs from getting reset on switch and the loaded actions not working properly
----------, Dec 17, 2020

  • Update to latest Velocity build
  • Fix exception that happens when the default-language is missing
----------, Dec 10, 2020

  • Fixes a possible exception when a player disconnects under certain conditions
  • Adds 1.16.4 version constant
----------, Nov 2, 2020

  • This tries to workaround the Vanilla bug MC-164316 which causes the client to fail applying a pack for the first time when the file's hash changed in the server config while the URL stayed the same. This is done by appending the hash directly to the URL so that the client treats it as a new pack when the hash changes. If it doesn't change then it will still use the cached local version.
----------, Oct 26, 2020

  • Update MineDown text parser to version 1.6.2. Now supports insertions and latest Velocity changes.
----------, Oct 24, 2020

  • Fix some backwards compatibility issues in the new message handling on old 1.8.8 Spigot servers
----------, Oct 3, 2020

Fixed the following issues while running the plugin on Velocity:
  • RGB colors not being supported in the language config
  • Pack hashes not getting automatically generated
  • Also improved the config format style after plugin saves
----------, Sep 23, 2020

  • Fixed an issue that could prevent the config from loading properly on Velocity
----------, Sep 22, 2020

  • Fixes that all logging messages were logged as "ERROR" on Velocity
  • Fixes loading of per-server assignments on velocity
----------, Sep 22, 2020

  • Fixes that the title/messages would not show up after the sending
  • Fixes that send actions after the first try would not use title timings
  • Fixes that the send action could be bypassed in certain configurations (unknown target server)
  • Also fix that empty values would be tried to execute when using values from the language config in an action
  • Added ability to provide manual packet mapping via the packetmap.yml on Bungee for future versions. (That way you could ideally add new version compatibility to the Bungee plugin before I update the resource. Just set the protocol version and the appropriate packet ID)
And yes, 1.9.6 was skipped.
----------, Sep 6, 2020

  • Added 1.16.2 BungeeCord support
  • Added 1.16.2 version config constant
  • Added pack format 6 for 1.16.2
----------, Aug 12, 2020

  • This fixes a potential NullPointerException in the /frp usepack command in the Bukkit version in the case that there are no packs stored.
----------, Aug 10, 2020

  • Fixed an error when sending messages on the latest version of BungeeCord
  • Fix the resend parameter not working correctly in the reload command
  • Preserve the case of resource pack names in the config when it gets saved
  • Improve the debug log
----------, Jul 7, 2020

  • Update for 1.16.1 pack version settings support
  • Fix issues with 1.14 and 1.15 clients
----------, Jun 24, 2020

  • Updated to work with Bungee 1.16 and provide 1.16 version setting
----------, Jun 23, 2020

  • Added the ability to define pack variants for better per-version and permission packs.
    With pack variants it is possible to define different URLs and hashes for the same pack. Currently this is only possible via the config.
    With this it is no longer necessary to use the secondary list for different version packs (but that method still works) and it's now possible to use a single pack for multiple versions with the /usepack command.
  • Made MineDown formatting available on Spigot and on all status actions
----------, Apr 24, 2020

  • Fixed an error in the language handling which stopped usage of any non-English locale when running the plugin on a Bukkit based server
  • Fixed an error with loading the plugin in a 1.8.8 Spigot server and potentially some other, less common server versions
  • Fixed that the config is saved with empty values for non-defined keys when edited through the commands
----------, Apr 14, 2020

  • Packs now support a version property where the Minecraft version a pack is for can be specified directly rather than just using the pack format version. (If both are specified the highest one in terms of corresponding protocol version will be used)
  • version can be set to either the Minecraft version name (like 1.15.1) or the specific protocol version number directly.
  • Similarly to the pack format the plugin will select the next lowest version below the client version so if you want to specify different packs for different versions you need to add the one with the highest as the main pack and the rest in a descending order to the secondary list of the assignment.
  • The version also shows in the messages (if you update your language file with the %version% placeholder) and is able to be set via /frp pack <name> version
----------, Feb 12, 2020

  • This fixes a potential disconnect of the client when receiving the ResourcePackStatusPacket on some custom Bungee versions
----------, Jan 7, 2020

  • Made BungeeCord part compatible with 1.15
  • Added support for MineDown formatting in the language messages.
    MineDown will not be parsed in action messages!
    If you want that put the message with some key in your language file and use "lang:your.language.key" as the message value
PS.: 1.15 clients will now use the pack format 5 and load server resource packs up to 100MB in size!
----------, Dec 10, 2019

  • Added the ability to define a title's timings via the
    TITLE_FADEIN, TITLE_STAY and TITLE_FADEOUT actions.
  • Fixed lists not working in actions as advertised in the config comments
----------, Sep 13, 2019

  • Added commands to query the current and stored pack of a player:
    /frp getpack [<player>] - Get the currently applied pack
    /frp getstoredpack [<player>] - Get the stored pack, requires UUID for offline players
  • Added command to query the usage information for a specific pack:
    /frp packusage <pack> - Shows the amount of players that have the pack applied as well as stored
----------, Sep 4, 2019

  • Added the following placeholders to be used through PlaceholderAPI:
    - %frp_pack% - Shows the name of the player's pack
    - %frp_storedpack% - Shows the name of the player's stored pack
    - %frp_pack_<packname>_online% - Shows the amount of online players using the pack
    - %frp_pack_<packname>_stored% - Shows the amount of players that have the pack stored
    (Unfortunately there is no Bungee part to PlaceholderAPI so these are only available on Bukkit)
----------, Sep 2, 2019

  • Fix wrong no-permission language key
  • Fix NPE when viewing info of empty pack
----------, Aug 13, 2019

  • Added a config option stored-packs-override-assignments to decide whether or not non-temporary player packs should override assignment packs or not
  • Fixed two cases where the config wasn't saved when edited through the commands (adding a new pack and adding a new assignment)
  • Fixed update-notification and disable-metrics options not being able to get reloaded
----------, Jul 24, 2019

  • Add support for 1.14 on BungeeCord
----------, Apr 23, 2019

  • Fixed timeout actions running twice
  • Fix that the ResourcePackStatusEvent was called with a null player if the player was offline at the time of the event getting called. (Now it doesn't call the event anymore when the player goes offline before it can be called)
----------, Apr 19, 2019

  • Fix an issue that made the prompt timeout functionality no longer work
  • Fixed a potential exception when language configs are missing
----------, Apr 16, 2019

  • Add a new "REQUESTED" status that can be used to run actions when the pack download is send to the client and before he potentially answers yes or no on the request screen. (This status will run every time though even when the request screen isn't displayed as we have no way of knowing that)
  • Now calls the ResourcePackStatusEvent for all statuses (new: TIMEOUT, WRONG_VERSION, NO_PERMISSION) and also on Bukkit. This makes it possible to react on the statuses in other plugins too.
  • Fix an issue that prevented the correct pack format from being calculated when running both ViaVersion and ProtocolSupport
  • 1.8.3.1 hotfix for status being broken
----------, Mar 31, 2019

  • Make WorldGuard usage configurable. Also should automatically catch issues with incompatible/outdated WorldGuard/WorldEdit versions (e.g. FAWE's outdated one)
  • Make Bungee version work with latest BungeeCord builds
  • Make assignment config load messages use the debug log level instead of always showing.
----------, Mar 7, 2019

  • Fixed bypass permissions not working on actions that happened before world/server switch
  • Renamed global server section in Bukkit version from "server" to "global". ("server" will still work and be used before "global" if both are available)
  • Added some language messages missing from the default language config
  • Fixed language config based messages (via lang: prefix) not working in world switch message actions
  • Improved default config formatting (including a comment at the top with the link to the default config) and added missing useauthme key
  • Updated hash of the default empty pack to match changed pack file
----------, Feb 6, 2019

  • Added commands to edit pack assignments and actions ingame/from the console:
    /frp pack <pack> [url|hash|format|restricted|permission]
    /frp addpack <name> <url>
    /frp listassignments
    /frp deleteassignment <assignment>
    /frp globalassignment|assignment <assignment>
    - info
    - pack <pack>
    - addsecondary <pack>
    - removesecondary <pack>
    - regex <regex>
    - senddelay <delay in ticks>
    - addaction <status> <action> <value>
    - removeaction <status> [<action>]
    - addfirstjoinaction <status> <action> <value>
    - removefirstjoinaction <status> [<action>]​
    (You might need to update/regenerate your language file! Either delete the existing one and let the plugin recreate it on startup/reload or if you want to manually add them take a look at the default language file)
  • Added /resetpack command to reset the pack that a player has applied or stored to none.
  • Added permissions to bypass certain actions for different statuses or assignments. Possible Permissions:
    forceresourcepacks.bypass.<action>
    forceresourcepacks.bypass.<status>.<action>
    forceresourcepacks.bypass.<assignment>.<action>
    forceresourcepacks.bypass.<assignment>.<status>.<action>
    Actions and statuses are the same as in the config and should be lowercase in the permissions.
  • Added config options to disable the metrics and update-checker independently. All metrics were already disabled when either bStats or PluginMetrics were disabled but this allows it to be configured on a per-plugin basis.
  • Update default hash of empty pack due to changed pack content (added an empty assets folder as that might be necessary in some cases) It should auto update on plugin startup, otherwise copy it from the default config if you use my empty pack url!
----------, Jan 31, 2019

  • Added the ability to define multiple different language configs. The plugin will automatically choose the language based on the client's language setting (or the default language if not provided)
    Besides being able to configure all command messages you can also use the language config entries in any action by prefixing the config key with lang:
    Requires at least a 1.12.2 server when using the plugin on Bukkit!
  • Made compatible with latest WorldGuard update (requires at least WorldGuard b1754!)
  • 1.17.22.1 hotfix for Bukkit version not saving default language configs
----------, Nov 5, 2018

  • Make compatible to new AuthMe API
  • Add direct support for Minecraft 1.13.1 and 1.13.2
----------, Oct 30, 2018

  • This fixes an issue that prevented the saving of the config (e.g. after generating hashes) when using the old empty-pack format.
----------, Oct 10, 2018

  • Fixed issues with the custom flags that arose due to API changes in WG7 (you will have to use at least the Beta 1 version of WorldGuard for this and future versions to work)
  • Made it possible to run plugins without the javax module (which versions above 8 no longer include by default). This doesn't mean that every feature will definitely work when using Java 9+, it's just that a couple issues that were noticed wont happen anymore on them.
----------, Oct 4, 2018

  • Added support for ProtocolSupport on Bukkit
  • Added support for ViaVersion on Bungee
  • Fixed a bug that caused the stored player packs (with /usepack) to not get stored
  • Fixed a bug that prevented the debug logging mode from being able to get disabled
----------, Aug 24, 2018

  • Make the Bukkit version work with WorldGuard 7. (the new 1.13 version) This also makes the plugin more stable in the case that there are new breaking changes in a future WG version.
  • Fix duplicate pack sends when a WorldGuard region has a pack set and a player logs in/teleports into it
  • Fix some cases where the empty pack would get send even when a player didn't have a pack
----------, Aug 17, 2018

  • Updated to 1.13 - this is a pretty early version that should technically work but if you notice any issues please report them to me asap, especially on Bungee
  • Future versions now properly use the highest known pack format on Bukkit, not the lowest (this should avoid some issues with future updates that change the pack format)
  • Some internal cleanup and optimisation
----------, Jul 24, 2018

  • Fixed an error that stopped first-join actions from working
  • Added a warning when using first-join actions without enabling join storage on BungeeCord
  • Added support for running multiple player/console commands in an action. Either use multiline strings with each line being one command or use a list.
----------, May 24, 2018

  • Added a new config option (first-join-actions) that lets you define different actions for when this is the first time a player joins your server. (E.g. for only kicking them once and not each time they don't accept the pack)
    The syntax is the same as the actions section and the first-join-actions section will completely override the normal actions section if defined and it is the first time a player joins.
    When using the plugin on BungeeCord you will have to enable the
    store-joins setting in the config for first join actions to work. This stores all players that have joined your server and is necessary due to the fact that BungeeCord itself does not store this information. (Bukkit does that automatically)
----------, Dec 22, 2017

  • Fixed that the pack doesn't get send when joining while standing in a WorldGuard region that has a pack set via the resourcepack-on-entry flag.
  • Fixed some potential incompatibility with older Bungee versions.
----------, Nov 13, 2017

  • Fixes an exception that was thrown when no global server/Bungee assignment was defined in the config
----------, Oct 20, 2017

  • Fix an issue where the plugin isn't loading on BungeeCord
----------, Oct 17, 2017

  • Fixed an issue where actions of assignments that used regex wouldn't work correctly
  • Fixed an issue where the actions were executed twice while switching a world/server
----------, Oct 17, 2017

  • Added a config option (usepack-is-temporary) to switch between applying packs temporarily or permanently when the /usepack command is used without any argument specifying that
  • Fixed an issue with the argument parsing in the /usepack command
----------, Oct 2, 2017

  • Fix an issue where the plugin didn't notice that a player changed their server resource pack acceptance setting after he logged out (Thanks to kit8379 for noticing this)
----------, Aug 30, 2017

I have been getting numerous reports about issues while sending a resource pack to the client regarding a client freeze and how I could or should fix it so here is some info about it and the explanation why I cannot do anything about that from the server/plugin side:

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 other than advice people to put pressure on Mojang to improve that behaviour.
----------, Aug 21, 2017

  • Updated to work with the 1.12.1 Bungee
----------, Aug 6, 2017

  • The /usepack command will now store the pack that a player has selected even after he logs out. It will re-apply the pack once the player logs in and use that pack on any server/world that doesn't have a special pack applied.
    To remove the stored pack just reset your pack to the empty one by selecting the name of the empty pack (like /usepack emptypack if the empty option is set to the emptypack pack).
  • Added a third parameter to the /usepack command to only give the player a pack temporary (until it is next changed or he logs out): /usepack <packname> [<playername>] [<temporary>].
    temporary can be set to true or false (default behaviour).
    Permission to set temporary packs: forceresourcepacks.command.usepack.temporary
----------, Jul 25, 2017

  • Fix issues with how the plugin depends on AuthMe and ViaVersion
  • send-delay setting now also applies for AuthMe logins
  • Set the user agent to ForceResourcepacks/plugin-version when downloading packs for the hash generation
----------, Jul 11, 2017

  • Added the ability to match world/server names with a regex config key in the assignment. Example:
    Code (Text):
    servers:
      game_servers:
        # Use a regex to target all servers with a certain name
        regex: 'game_.*'
        pack: gamepack
    Assignments with the regex key will no longer match their assignment name but the regex. (Please note that regex matching is slower than literal matching) Regex-assignments will be checked in the order that they are defined in the config
  • Added a debug log message that shows the selected assignment when a player joins/switches world/server.
----------, Jun 24, 2017

  • Update to the full 1.12 version
----------, Jun 8, 2017

  • Updated to work with the 1.12 pre-5 release
  • Fix a bug with the /usepack command
  • Fix error when an incompatible WorldGuard version is used (Bukkit only)
----------, May 23, 2017

  • Fixed NullPointerException when certain config keys are missing
  • Fixed issues with how default values are handled
----------, Apr 17, 2017

  • Fixed an error that might occur when a player disconnects from the bungee without being connected to one of the backend servers
----------, Mar 17, 2017

  • Added an option to delay the sending of the resource pack on join or switch. (send-delay) It can be set globally or for each server/world individually.
    If you are using the the plugin on both Bukkit and Bungee at the same time I recommend setting it shorter on the Bukkit than the Bungee to ensure that world packs are send before the ones configured on the Bungee.
    Default values are 10 ticks on Bukkit and 20 on Bungee.
  • Also added bstats.org metrics as mcstats.org seems to be dying. Here are the pages for the Bukkit and the Bungee version.
----------, Mar 9, 2017

  • Added WorldGuard flags to set and limit resource packs in specific regions (requires WorldGuard above 6.1.3).

    Added Flags:

    resourcepack-on-entry
    resourcepack-on-exit

    String flags, take the name of a configured pack and will apply it as soon as the region is entered

    entry-without-resourcepack
    exit-without-resourcepack

    Boolean (allow/deny) flags. Default is allow.
    You can bypass it with the same bypass permission as the normal entry and deny flags. If the entry-deny-message or exit-deny-message is set it will send it to the user.​
  • Fixed some issues with the internal status handling
----------, Feb 15, 2017

  • Fix access of the ViaVersion API (Bukkit version only update)
----------, Nov 28, 2016

  • 1.11 Update
  • Added support for the new pack format 3
  • If you want to run this plugin on Bukkit and want pack formats depending on the player's version you have to run ViaVersion 1.0.0 or later!
----------, Nov 22, 2016

  • Now requires Java 8!
  • Add config option to disable automatic hash generation (autogeneratehashes)
  • Add config option to set a delay in seconds before kicking a player with the kick action (kickdelay) You might want this because in some cases players might disconnect with a connection error message instead of the kick message. With this delay you can send a title or chat message before they get kicked!
  • Allow changing of authme config option on reload
  • Fix internal tracking of user packs breaking on plugin reload
  • Fix send action trying to teleport/send to current world/server
  • Don't generate config entries and hashes for backend packs
----------, Nov 10, 2016

  • Fix an error that resulted in players timing out even 'though they already loaded the pack or had it applied
----------, Sep 14, 2016

  • Fix an error in the algorithm that resolves the packs. In some cases packs where resend although the player already had the pack
  • Don't allow registering of two packs with the same url/hashes to avoid some resolving issues
----------, Sep 13, 2016

  • Fix a potential error on Bukkit due to some events getting called async in some CraftBukkit versions.
    If you are using this plugin on Bungee or aren't getting exceptions related to kicks/teleports you don't need to update!
----------, Sep 7, 2016

Due to 1.10 clients requiring the correct hash to be sent I decided to build in a way to directly generate the hashes. This removes the need of manually setting the hash.
  • Added automatic update of pack hashes on startup
  • Added /frp generatehashes (Permission: forceresourcepacks.command.generatehashes)
Please note that this feature requires you to have set a direct url for the pack download (the client needs that anyways, therefore the plugin is now able to tell you if this is setup correctly).
----------, Sep 1, 2016

  • Added support for sending hashes with Bukkit. 1.10 clients need the correct pack file sha1 hashes to accept the pack! Take a look at this post how to get them!
  • Fixed an issue under Bukkit when some values weren't configured in the config
  • Added support for the different logging level enums and weights in the debug option and made it so "debug: false" completely disables the debug logging instead of logging it with the FINE level
  • Added a permission to get notified when an update is available (forceresourcepacks.updatenotification)
  • Changed some internal stuff
----------, Jul 22, 2016

  • Added support for 1.10 clients on BungeeCord, if you run this plugin on Bukkit you don't need to update it!
----------, Jun 9, 2016

  • Really fix the secondary pack resolving which wasn't quite right when no main pack was defined.
  • Added MetricsLite, if you don't want that you can opt-out in the PluginMetrics/config.properties (bungee) or PluginMetrics/config.yml (bukkit)
----------, Jun 8, 2016

  • Updated to support 1.9.4
  • Fixed wrong resolving of secondary packs
  • Fixed issue in Bukkit version while getting the server version in some cases
  • Added two new possible actions:
    CONSOLE_COMMAND - Executes a command as the console, use %player% if you need the name of the player which reacted
    PLAYER_COMMAND - Executes a command as the player which reacted, he needs the permissions for the command you want him to execute!
    Commands can only be executed on the server where the plugin is running on, so if you use it on the Bungee commands will be executed on the Bungee and not on the Minecraft server!
----------, May 14, 2016

  • Added an option to set the format of the pack as 1.9 introduced a new one with the version 2.
    Players with 1.8 will get packs with version 1/no version and players that connect with 1.9 get version 2 if available.
    The defined pack and then the secondary list is used to resolve which pack a player gets from the top to bottom.
    There is also a new status to react on called WRONG_VERSION which gets called when no pack is found to send to a player because of his client's version.
    To resolve the player's version under Bukkit you need to have ViaVersion installed!
  • Added option to restrict a pack so that only players with the permission to use it will get it send. You can also set your own permission if you want.
    There is also a new status to react on called NO_PERMISSION which gets called when no pack is found to send to a player because of his permissions.
Example on how the new pack config options could be integrated:
Code (Text):
packs:
  lobbypack:
    url: http://example.com/resourcepack.zip
    hash: abcdef012345678abcdef012345678abcdef0123
    format: 2
    restricted: true
    permission: forceresourcepacks.pack.lobbypack
  • /usepack without any arguments now lists all the packs a player has access to via the /usepack command. You should add the new message config entries "packlisthead" and "nopacks" for that to not display an error on Bungee.
  • Experimental AuthMe Reloaded support. (If you want support for more authentication plugins contact me!)
    It tries to send the pack after a player logged in.
    If you want to use that on Bungee you have to run Force Resourcepacks on the Bukkit server too and set "authme" to true in the config.yml on the Bungee side.
  • Add http://moep.tv/minecraft/rp explanation site on how to enable server resource packs. (Linked to via s.moep.tv/rp shortlink in the default config)
----------, May 2, 2016

This update fixes the bypass of the forcing of the server resourcepack by just pressing ESC in the prompt screen. By adding a prompttimeout config option you can now set in how much seconds a player needs to accept a pack before counting his reaction as declined. (Default is 15 seconds)

This stops players from bypassing the server resourcepack prompt by pressing ESC in it. (Somehow Mojang didn't thought of sending a status packet there... I will open a bug report for that so maybe they will implement that in a future client version)

You can also set a different reaction on the TIMEOUT status independently from the DECLINED status if you want that. If no extra reaction on the prompt timeout is set the declined status will be used instead.
----------, Apr 13, 2016

  • This update changes the plugin message channel from the plugin name to "Resourcepack" to resolve some issues with 1.8 protocol hack servers because the plugin channel name was longer than 16.
----------, Mar 9, 2016

  • Small fix with per server actions on BungeCord (Bukkit needs no update)
----------, Mar 4, 2016

  • Update for 1.9 with 1.8 support. (Only necessary if you run this plugin on BungeeCord. The Bukkit plugin works just fine with the update)
----------, Mar 1, 2016

  • Fix first secondary pack being send if the user already has the empty pack
  • Fix problem with actions not updating when reloading config via command
  • Fix a possible NPE
----------, Feb 25, 2016

  • Server secondary packs fixed
  • Fixed hashes on BungeeCord not working (Bukkit version doesn't have that feature at all for now due to API limitations)
  • Project structure changed to pull changes a lot easier from the free versions. (Bungee and the new World Resourcepacks)
    Due to that the package structure changed from de.themoep.BungeeResourcepacks to de.themoep.resourcepacksplugin, if you for example used the ResourcePackStatusEvent in one of your plugins you need to update
  • JavaDocs for devs, not everything is fully documented yet but will be Soon™
----------, Feb 24, 2016

  • This update fixes a small oversight with the /usepack command while converting from Bungee to Bukkit. It also makes the usage message a bit nicer!
----------, Feb 3, 2016

This plugin now works on both BungeeCord and Spigot! Make sure that you are running 1.8.8 on the Bukkit server! The main feature of the Bukkit part is that you can set different resource packs per world. Also please see the configuration differences below!

The Bukkit part is a really early version, please report all bugs you notice back to me so that I can fix that asap. Especially those related to running both, the BungeeCord and Bukkit version as there are a lot of configuration combinations and I might have missed some while testing.

Configuration-Differences:
  • The global key is named server
  • The servers key is named worlds
  • The send action will send to a specific world, not server
  • The kick action will kick from the Bukkit server, not from the BungeeCord network
  • For now the ACTION_BAR action is not available on Bukkit servers, it will display a warning in console and send the message as normal chat message
Other than that the configurations are interchangeable. For better compatibility with the Bungee-part make sure that you use the same names, hashes and URLs for the different packs.
----------, Feb 3, 2016

  • Catched two small cases which did not fail controlled
----------, Jan 4, 2016

  • Fix NPE when running usepack command from console
  • Added ability to change usepack message in config
----------, Nov 29, 2015

  • Fix an NPE when the user doesn't have a pack
----------, Aug 30, 2015

Resource Information
Author:
----------
Total Downloads: 1,924
First Release: Aug 6, 2015
Last Update: Dec 7, 2024
Category: ---------------
All-Time Rating:
50 ratings
Find more info at wiki.phoenix616.dev...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings