How to Set Up a Server Resource Pack

A server resource pack changes how Minecraft looks and sounds for everyone on your server. Custom textures for items, sounds for events, or a completely different look for blocks: the pack downloads automatically when a player joins. No manual installation on their end.

Resource packs are what turn a generic Minecraft server into something with its own identity. Custom item textures for an RPG server, themed sound effects for a horror map, or retextured ores for a skyblock: the possibilities go as far as your pack maker takes them.

How it works

In server.properties you point to a URL hosting a .zip file. Minecraft downloads this file the first time a player connects (and again whenever the hash changes). The player sees a prompt: "This server recommends a resource pack. Would you like to download it?"

Step 1: host the pack

The resource pack must be available as a direct download via a URL. Good options:

  • GitHub Releases: upload the zip as a release asset. The download URL is direct and stable.
  • MC Pack Hosting: purpose-built for Minecraft resource packs, free to use.
  • Your own web server or VPS: if you have one, place the zip in a publicly accessible directory.

Do not use Dropbox share links (they are not direct downloads), Google Drive (the URL structure changes), or Discord attachments (they expire). Any host that redirects, requires login, or serves an HTML page instead of the raw file will not work.

Step 2: configure server.properties

Open server.properties and set the following values:

  • resource-pack=https://your-direct-url/pack.zip
  • resource-pack-sha1= followed by the SHA1 hash of the zip file.
  • require-resource-pack=true if you want players to be forced to accept the pack. Anyone who declines gets disconnected.
  • resource-pack-prompt= with an optional message the player sees, for example "This pack contains our custom textures."

Step 3: generate the SHA1 hash

The hash tells Minecraft when the pack has changed. Without a hash, players re-download the pack every session. With a hash, they only download when the file actually changes.

On Linux or macOS:

sha1sum pack.zip

On Windows (PowerShell):

Get-FileHash pack.zip -Algorithm SHA1

Copy the 40-character lowercase hash into resource-pack-sha1=. Make sure there are no extra spaces or line breaks.

Step 4: restart and test

Restart the server. Join from the Minecraft client. You should see the resource pack prompt. Accept it, and the pack loads. If you set require-resource-pack=true, declining the prompt disconnects you.

Updating the pack

Upload a new version of the zip to the same or a new URL, generate a new SHA1 hash, update both values in server.properties, and restart. Players download the new pack automatically on their next login. The old pack is replaced in their client cache.

Using require-resource-pack

When require-resource-pack=true is set, the prompt changes from a suggestion to a requirement. Players who decline are disconnected immediately. This is essential for servers where the pack is more than cosmetic: if your custom items or UI elements depend on the pack to be understandable, allowing players to skip it breaks their experience and yours.

The downside is that a broken URL or a corrupted zip file now prevents everyone from joining. Always test your pack URL after uploading a new version.

Common mistakes

  • URL is not a direct download. If clicking the URL opens a webpage instead of downloading a file, it will not work. Test by pasting the URL into a browser; the zip should download immediately.
  • Wrong or missing hash. A wrong hash forces players to re-download every time they join. No hash at all does the same thing. Generate a fresh hash every time you change the pack.
  • Pack is too large. Minecraft allows packs up to 250 MB. Larger packs are rejected by the client. Keep textures at reasonable resolutions (128px or 256px covers most use cases) and remove unused assets.
  • Zip structure is wrong. The pack.mcmeta file must be at the root of the zip, not inside a subfolder. If you zip a folder, the structure is folder/pack.mcmeta, which fails. Zip the contents, not the folder.
  • Discord attachment links. Discord CDN URLs expire after a set period. Players who join after the link has expired cannot download the pack. Use a permanent host.

Does the pack download every time a player joins?

Only if the SHA1 hash has changed or if no hash is set. With a correct hash, Minecraft caches the pack on the client side. Players only re-download when you actually update the pack file.

How large can the pack be?

Minecraft accepts packs up to 250 MB. Larger packs are rejected. In practice, keep it as small as possible for faster downloads. A 50 MB pack takes a few seconds on a good connection; 250 MB can take a minute or more, and players on slow connections may time out.

Does the pack work for Bedrock players via Geyser?

Not automatically. Geyser can serve Bedrock resource packs, but that requires separate configuration in the Geyser plugin settings. Java resource packs are not translated to the Bedrock format. You need a Bedrock-compatible version of your pack and must configure Geyser to serve it.

Server resource packs work on all Minecraft plans at HostValues.


Still stuck? Open a support ticket and our team will help you out.

Back to the blog