---
title: "Hosting and Setting Up a Custom Resource Pack | ZCS"
description: "Host a custom resource pack for your server with a stable URL, correct SHA-1 hash and caching, then test downloads on real clients."
url: "https://www.zcraftstudios.com/blog/custom-resource-pack-hosting-setup"
updated: "2026-10-20T07:16:50.972429+00:00"
source: "ZCraft Studios"
---

> Site index for AI agents: https://www.zcraftstudios.com/llms.txt (full reference: https://www.zcraftstudios.com/llms-full.txt). Every page is available as Markdown by adding `.md` to its URL or sending `Accept: text/markdown`.

1. [Home](https://www.zcraftstudios.com/)
2. [Blog](https://www.zcraftstudios.com/blog)
3. Hosting and Setting Up a Custom Resource Pack

[ All posts](https://www.zcraftstudios.com/blog)

# Hosting and Setting Up a Custom Resource Pack

ZCraft StudiosOct 3, 2026Updated Oct 20, 2026

Host a custom resource pack for your server with a stable URL, correct SHA-1 hash and caching, then test downloads on real clients.

## In this guide

- [Structuring the Pack](#structuring-the-pack)
- [Hosting the Pack](#hosting-the-pack)
- [Getting the SHA-1 Hash](#getting-the-sha-1-hash)
- [Configuring server.properties](#configuring-serverproperties)
- [Testing Before Going Live](#testing-before-going-live)
- [Updating the Pack Later](#updating-the-pack-later)
- [A Note on Pack Size](#a-note-on-pack-size)
- [Verify delivery from a clean client](#verify-delivery-from-a-clean-client)
- [Official documentation and links](#official-documentation-and-links)
- [Resource-pack rollout verification](#resource-pack-rollout-verification)

## Hosting and Setting Up a Custom Resource Pack

_The pack itself is a zip file. The part that trips people up is getting the server to actually serve it correctly._

A server-side resource pack lets every connecting player automatically download custom textures, sounds, or models without installing anything manually. The server just points clients at a download URL on join.

## Structuring the Pack

A resource pack is a zip file with a specific internal structure:

```
pack.zip
├── pack.mcmeta
├── pack.png (optional icon)
└── assets/
    └── minecraft/
        └── textures/
            └── ...
```

`pack.mcmeta` declares the pack format version, which must match what the target Minecraft version expects. A mismatched format number is one of the most common reasons a pack fails to load or shows a warning.

## Hosting the Pack

The server needs the zip file reachable at a public URL. Options, roughly in order of ease:

- A GitHub repository with the raw file URL (works, but GitHub isn't built for this and can be unreliable for large packs)
- A dedicated static file host or CDN (more reliable for production use)
- Self-hosting via a simple web server on the same machine as the Minecraft server, with the pack's folder served over HTTP/HTTPS

## Getting the SHA-1 Hash

Minecraft requires the pack's SHA-1 hash to verify the download wasn't corrupted or tampered with in transit:

```
sha1sum pack.zip
```

## Configuring server.properties

```
resource-pack=https://example.com/pack.zip
resource-pack-sha1=<the hash from sha1sum>
require-resource-pack=false
```

Setting `require-resource-pack=true` forces players to accept the pack to join at all. Think about this carefully, since some players reject resource pack prompts by habit, and a required pack with a slow host can create a frustrating join experience.

## Testing Before Going Live

Join as a test account and confirm the pack prompt appears and downloads correctly. A broken URL, wrong hash, or malformed `pack.mcmeta` typically either shows an error on join or silently fails to apply. Check the client's resource pack settings (and server console, for some setups) if it doesn't seem to be working.

## Updating the Pack Later

Changing pack contents without changing the URL can cause clients to use a cached, outdated version. Updating the hash in `server.properties` to match the new zip forces clients to re-download rather than relying on a stale cache.

## A Note on Pack Size

Large resource packs mean a longer download before a player can actually join. For a public server where first impressions matter, keeping the pack reasonably sized (compressing textures, trimming unused assets) is worth the effort compared to a multi-hundred-megabyte pack that makes new players wait before they even see the world.

## Verify delivery from a clean client

Resource packs often appear to work during development because the owner's client already has cached assets. Test with a client that has never downloaded your pack.

1. Export the pack as a ZIP with `pack.mcmeta` at the root rather than inside an extra directory.
2. Host it at a stable HTTPS URL that serves the ZIP file directly rather than an HTML download page.
3. Configure the relevant resource-pack settings for your Minecraft version, including a correct hash when supported or required.
4. Connect with a clean client and accept the download.
5. Confirm the custom textures load, then disconnect and reconnect to test updates.

### Troubleshooting

| Symptom | Check first |

| --- | --- |

| Download fails | Direct URL, response status, redirects and file permissions |

| Default textures remain | Archive structure, pack format and client compatibility |

| Old textures appear | Client cache and the pack's content hash |

| Some players cannot join | Whether accepting the pack is required and whether delivery succeeds |

Never publish private storage credentials inside a resource-pack URL. Keep a versioned copy of each released ZIP so you can roll back.

For edition-specific formats, refer to the [Minecraft Java Edition resource-pack documentation](https://minecraft.wiki/w/Resource%5Fpack).

## Official documentation and links

- [Official Minecraft website](https://www.minecraft.net/en-us)
- [Setting Up ItemsAdder for Custom Items and Blocks](https://www.zcraftstudios.com/blog/itemsadder-custom-items-blocks-setup)

## Resource-pack rollout verification

Test the public HTTPS download URL in a private browser session; it should return the pack file, not an authentication page or HTML error. Check `server.properties` settings against the exact Minecraft version you run, including current resource-pack hashing requirements. Restart and connect with a player profile that has no previously cached copy.

If assets fail for only some players, compare client version, pack acceptance and download logs before assuming the archive itself is broken.

### More troubleshooting

- [Resource pack download failed](https://www.zcraftstudios.com/blog/minecraft-resource-pack-download-failed-fix)

## Continue reading

- [Server Resource Pack Download Failed: URL and SHA-1 Fixes](https://www.zcraftstudios.com/blog/minecraft-resource-pack-download-failed-fix)
- [Reset a Minecraft Resource World Without Wiping the SMP](https://www.zcraftstudios.com/blog/minecraft-server-resource-world-reset)
- [First Minecraft Server on a Hosting Panel: Checklist](https://www.zcraftstudios.com/blog/minecraft-hosting-panel-first-server-checklist)
- [Setting Up Slimefun for Custom Tech and Magic](https://www.zcraftstudios.com/blog/slimefun-custom-tech-magic-setup)

[ Previous guide Velocity vs. BungeeCord vs. Waterfall: Choosing a Proxy](https://www.zcraftstudios.com/blog/velocity-vs-bungeecord-vs-waterfall-comparison)[ Next guide Dynmap Setup Guide: Install, Render and Secure](https://www.zcraftstudios.com/blog/dynmap-setup-guide)
