How Server Resource Packs Work

When a player joins your server, Minecraft sends them the URL and SHA-1 hash you configured in server.properties. The client downloads the zip to its local cache, verifies the hash matches, and applies the pack on top of (or instead of) any packs the player already has enabled. The client caches the pack by its SHA-1 hash, so returning players only re-download if the hash changes, meaning you do not need to worry about players suffering a long download every session. If you set require-resource-pack=true, players who decline the pack prompt are disconnected immediately. If you leave it false, players can skip the pack and play with their own textures, which is useful for optional cosmetic packs but problematic for packs that gate important visual information like custom item models.

Hosting the Pack File

The URL in server.properties must point to a direct download link for the zip file. "Direct download" means the URL returns the raw bytes of the zip when fetched, not a webpage with a download button. Common hosting options include: a public GitHub release asset (the "Download" link from a GitHub releases page is a direct link), Dropbox with the URL modified to end in ?dl=1 instead of ?dl=0, or any web server with static file hosting enabled. Google Drive sharing links are not direct downloads and will not work. Mediafire links route through an HTML redirect page and will also fail. Self-hosting on your own web server or a CDN is the most reliable option if your pack changes frequently. The zip must be structured correctly: the top-level directory inside the zip should contain pack.mcmeta and assets/. Packs with extra wrapper folders inside the zip fail silently on the client side.

Setting resource-pack in server.properties

Open server.properties via the file manager in your panel or over SFTP. Find the resource-pack line and set it to your direct download URL. The line should look like resource-pack=https://example.com/mypack.zip. If your URL contains special characters like an equals sign or ampersand, you need to escape them with backslashes in the properties file. Save the file and restart the server. The URL is sent to clients at connection time, so any players already online will not receive the new pack until they reconnect. For a full reference on server.properties settings, see our guide on how to configure server.properties.

Forcing the Pack

Setting require-resource-pack=true in server.properties makes the pack mandatory. When a player connects and declines the pack download prompt, Minecraft disconnects them with a message explaining the pack is required. This is appropriate for servers where the pack provides essential functionality, such as custom item textures in an RPG server where item names alone do not distinguish between item tiers. If you force the pack, make sure your pack is small enough to download quickly on a typical connection: anything over 20 MB risks timing out on slow connections and locking players out. You can also set the resource-pack-prompt field to a custom message shown to players in the acceptance dialog, which is useful for explaining why the pack is needed or what it changes. On Paper servers, you can push resource packs per-player using the API, but for most use cases the server.properties approach is sufficient.

Generating the SHA-1 Hash

The resource-pack-sha1 field in server.properties is optional but strongly recommended. Without it, clients re-download the pack every time they connect even if nothing changed, because they have no way to verify the cached copy is current. On Linux or macOS, generate the hash with sha1sum yourpack.zip in the terminal. On Windows, use certutil -hashfile yourpack.zip SHA1 in Command Prompt. The output is a 40-character hex string. Paste this into the resource-pack-sha1 line in server.properties. Every time you update the pack zip, generate a new hash and update the property. If you update the zip file at the same URL without updating the hash, clients will see the old hash still matches their cached copy and skip re-downloading the new version. The hash is the versioning mechanism: always regenerate it when the pack changes.

Troubleshooting Download Failures

The most common failure mode is players seeing "Failed to download resource pack" in their chat. This usually means the URL is not a direct download link, the server hosting the file is blocking automated requests, or the zip structure is malformed. Test your URL by pasting it directly into a browser address bar and confirming it downloads a zip file without redirects. Some CDN providers and file hosts add bot detection that blocks Minecraft's download client even though the URL works in a browser; switching to a plain web server or GitHub release asset resolves this. If players download the pack but textures do not appear, the most likely cause is incorrect zip structure. Open the zip and confirm pack.mcmeta is at the root level, not inside a subdirectory. Finally, if the pack applies but players see Minecraft's incompatible pack warning, the pack_format value in pack.mcmeta does not match the server version. Update the format number to match your Minecraft version per the wiki's pack format table. A free server on NetSkyway gives you full file manager and SFTP access to edit server.properties and test your pack on real hardware, and for the full walkthrough see our guide on how to get a free Minecraft server.