Server Resource Packs: Hosting, Setup and Download Fixes

Send a resource pack to players when they join. Set the download URL, SHA-1 and acceptance rules, then check common download problems or explore Nexo and ItemsAdder's pack tools.

zArrowTan Resources Nov 6, 2026 6 min read
config

1 resource-pack=PASTE_DIRECT_ZIP_URL_HERE

2 resource-pack-sha1=PASTE_LOWERCASE_SHA1_...

3 require-resource-pack=true

4 sha1sum "pack.zip"

5 certutil -hashfile "pack.zip" SHA1

6 certutil -hashfile "pack.zip" SHA1

7 sha1sum "pack.zip"

On this page
  1. Choose where the ZIP will be hosted
  2. Set the download URL and acceptance rules
  3. Calculate the ZIP's SHA-1
  4. Check a pack that will not download
  5. Let Nexo generate, host and send the pack
  6. Use ItemsAdder's resource pack tools
  7. Publish an updated ZIP with matching settings

Key takeaways

6
  • Set resource-pack to a direct HTTP or HTTPS ZIP download address.
  • Generate the lowercase SHA-1 from the exact uploaded ZIP and keep it matched to the download URL.
  • Server resource packs may not exceed 250 MiB.
  • require-resource-pack=true disconnects players who decline the pack.
  • Nexo generates and hosts resource packs; ItemsAdder generates, manages, merges and protects them.
  • Self-hosting a pack requires a reachable public address and an available port.

This guide is for Java server owners who already have a resource pack ZIP and want players to receive it when joining. You will set up its download address, configure acceptance rules and work through download checks, with separate sections for manual delivery, Nexo and ItemsAdder's pack tools.

Choose where the ZIP will be hosted

The server.properties documentation defines resource-pack as the pack's download URL. It must point to a ZIP archive over HTTP or HTTPS, so choose an address that downloads the file directly.

A direct URL retrieves the ZIP itself rather than a preview or sharing page. The resource pack tutorial specifies a direct download link for server packs. Test the address you plan to enter: opening it should retrieve the archive without requiring another download button.

  1. Choose a hosting service or web server that can provide a direct ZIP address.
  2. Upload the exact ZIP you intend to distribute.
  3. Test the address yourself and check that it downloads the ZIP rather than opening a page about the file.
  4. Keep that address ready for the server settings.

The documented server resource pack size limit is 250 MiB. Check the archive's size before spending time changing server settings.

For a manual setup, you supply the hosted ZIP and its settings. Nexo generates and hosts resource packs, while ItemsAdder's listed pack features cover generation, management, merging and protection. Our custom content plugin comparison helps if you are still deciding which system to use.

Set the download URL and acceptance rules

For manual delivery, use the following settings in server.properties. Replace both uppercase placeholders before starting the server. This example requires players to accept the pack; use require-resource-pack=false if you want acceptance to be optional.

resource-pack=PASTE_DIRECT_ZIP_URL_HERE
resource-pack-sha1=PASTE_LOWERCASE_SHA1_HERE
require-resource-pack=true

Generate the SHA-1 of the exact ZIP you uploaded, in lowercase hexadecimal. The hash is optional, but the documentation recommends it for integrity checking. Copy the result into resource-pack-sha1.

Calculate the ZIP's SHA-1

Replace pack.zip with your archive's filename. Run the command in the folder containing that ZIP, using the route below for your server management interface. Copy only the hexadecimal digest, without the filename or status messages, and use lowercase letters.

On a Linux machine with GNU Coreutils, open a shell in the ZIP's directory and run sha1sum:

sha1sum "pack.zip"

On Windows, open Command Prompt in the ZIP's directory and use certutil:

certutil -hashfile "pack.zip" SHA1

Hash the ZIP on your own computer before uploading it. You do not need shell access to the hosted server. On Windows, open Command Prompt in the ZIP's folder and run:

certutil -hashfile "pack.zip" SHA1

On a Linux computer with GNU Coreutils, run this in the ZIP's folder instead:

sha1sum "pack.zip"

Upload that same ZIP to your pack host, then paste its digest into resource-pack-sha1 through the File Manager.

Hash the ZIP on your own computer before uploading it. On Windows, open Command Prompt in the ZIP's folder and run:

certutil -hashfile "pack.zip" SHA1

On a Linux computer with GNU Coreutils, run this in the ZIP's folder instead:

sha1sum "pack.zip"

Upload that same ZIP to your pack host, then paste its digest into resource-pack-sha1 using Files / FTP.

SettingWhat it controlsWhat to enter
resource-packThe pack download addressThe direct HTTP or HTTPS ZIP URL
resource-pack-sha1The pack's integrity digestThe uploaded ZIP's lowercase SHA-1
require-resource-packWhether declining the pack disconnects the playertrue to require acceptance, otherwise false
resource-pack-promptA custom prompt message when the pack is requiredA message using chat component syntax, or leave empty for the default
resource-pack-idThe pack identifier sent to clientsAn optional UUID in hyphenated hexadecimal form

Apply the settings through the interface you use to manage the server:

  1. Stop the server through its console or server management service.
  2. Open server.properties in the server directory using your file editor.
  3. Enter the direct ZIP address, its SHA-1 and your chosen acceptance setting. Save the file.
  4. Start the server again and join to test the pack.
  1. Stop the server using the panel controls.
  2. Open the File Manager and locate server.properties.
  3. Edit the resource pack settings and save the file.
  4. Start the server and watch the Console while testing a player connection.
  1. Stop the server using the panel controls.
  2. Use the Files / FTP page to access server.properties.
  3. Edit and save the resource pack settings.
  4. Start the server again and check the console while joining.

Keep the custom prompt empty for your first test unless you already have a message in the required chat component syntax. Establish that the download works before adding another setting to troubleshoot.

The following tutorial demonstrates server resource pack setup and hosting approaches. Follow the settings above when configuring your server.

Video: Robot Cookie Watch on YouTube

Check a pack that will not download

Work through these checks in order. Change one thing at a time so you can tell which adjustment helped.

  1. Test the download address. Open the exact URL entered in resource-pack. Check that it retrieves the intended ZIP.
  2. Check the archive size. Compare it with the documented 250 MiB limit.
  3. Check the hash. Generate the SHA-1 again from the exact uploaded archive and compare it with resource-pack-sha1.
  4. Read the server console. The documentation says a digest mismatch produces a yellow warning.
  5. Check acceptance. If a player declines a required pack, disconnection is the configured result.
  6. Check the pack format. Match the pack to the Minecraft versions you intend players to use. Pack format numbers change between versions.

A download test and a visual test answer different questions. After testing delivery, check the textures, models or other assets that your server actually needs. For a custom weapon pack, our custom sword setup guide provides a focused next step.

Let Nexo generate, host and send the pack

Nexo is a paid Paper plugin for custom content with automatic resource pack generation, merging and delivery. Its hosting configuration offers several routes, including a managed service and hosting from your own server.

In Nexo's resource pack settingsSource site, Pack.server.type selects the hosting method in settings.yml:

  • POLYMATH: uses the Nexo team's managed hosting service.
  • SELFHOST: serves the pack from your machine and needs an open port and a reachable public address.
  • LOBFILE: uploads the pack to an external service and requires an API key.
  • S3: uses compatible object storage with the required endpoint, bucket and access settings.
  • NONE: sends no pack, intended for servers that should not dispatch one.

For self-hosting, arrange the port before selecting this route:

Choose an available pack-hosting port, arrange for it to be reachable publicly, then enter the port and public address in Nexo's SELFHOST settings.

Ask your host for an allocated port suitable for pack hosting. Use the supplied public address and port in SELFHOST, or choose managed hosting if an additional port is unavailable.

Ask your host which public address and port you can use for pack hosting. Configure SELFHOST with those details, or choose managed hosting instead.

Nexo's dispatch settingsSource site include send_pre_join, send_on_join, send_on_reload, mandatory and delay. Pre-join delivery may delay login for large packs. The mandatory setting requires acceptance and disconnects players who refuse.

Use ItemsAdder's resource pack tools

ItemsAdder is a paid custom content plugin whose features include a resource pack generator, manager, merger and protector.

These tools cover generating and managing a pack, merging pack content and protecting it. After preparing your pack, join and test the content that depends on it, using the download and visual checks above.

Publish an updated ZIP with matching settings

For a manually hosted pack, treat the archive, download URL and SHA-1 as one update. Give each published archive a distinct URL and record which archive that URL serves.

  • Generate the SHA-1 from the updated ZIP.
  • Update the URL and hash together using the server management tabs above.
  • Repeat the download, console and visual checks.
  • When using a plugin's pack workflow, regenerate the pack through that system and test the updated content in game.

Since Java Edition 1.20.3, downloaded server packs are stored in the client's downloads directory and packs have UUID identifiers. Keep the optional resource-pack-id distinct from the SHA-1 setting: the UUID identifies the pack, while the SHA-1 is its integrity digest.

Frequently asked questions

How do I add a resource pack to a Minecraft Java server?

Host the pack ZIP at a direct HTTP or HTTPS download address and put that address in resource-pack in server.properties. Add the archive's lowercase SHA-1 to resource-pack-sha1 for integrity checking. Choose whether acceptance is optional with require-resource-pack.

Why is my server resource pack not downloading?

Check that the configured URL downloads the intended ZIP and that the archive does not exceed 250 MiB. Compare the uploaded archive's SHA-1 with resource-pack-sha1 and inspect the console for a digest mismatch warning. Also check that the pack format matches the Minecraft versions you intend to support.

How do I force players to accept the server resource pack?

Set require-resource-pack=true in server.properties. Players who decline the pack are disconnected. You can also configure resource-pack-prompt with a custom message using chat component syntax.

What should I put in resource-pack-sha1?

Enter the SHA-1 digest of the exact ZIP hosted at your resource-pack URL, using lowercase hexadecimal. Run sha1sum "pack.zip" on Linux with GNU Coreutils or certutil -hashfile "pack.zip" SHA1 in Windows Command Prompt, replacing the filename with your own. Panel users can hash the ZIP on their own computer before uploading it. Generate a matching digest whenever you publish a changed archive.

What resource pack tools do Nexo and ItemsAdder provide?

Nexo generates and hosts packs, with POLYMATH, SELFHOST, LOBFILE and S3 hosting routes, plus NONE to disable dispatch. ItemsAdder lists resource pack generation, management, merging and protection. Check port availability before choosing Nexo's SELFHOST method.

Share this post

Other plugins mentioned

Related posts

© zArrowTan Resources 2026
Forked and customised by zArrowTan · Powered by Light Store