# How to set a server resource pack

> Host the pack zip on a direct link, put its URL and SHA-1 in server.properties, and decide whether players can refuse it.

Source: https://fadehost.com/docs/resource-packs/

A server resource pack is a zip the client downloads when a player joins: custom textures, sounds, fonts, models for plugins that use them. The server does not host the file itself; it hands players a link and a checksum.

## 1. Host the zip on a direct link

The link must return the zip file itself, not a page. Good options:

- A **GitHub release** asset: upload the zip to a release and copy its download URL.
- Any file host that gives a direct link (Dropbox links need `?dl=1` at the end).
- Your own web server or CDN.

Keep the zip under a size players will tolerate; the client shows a progress bar and gives up on very large packs on slow connections.

Do not point it at a FadeHost app address: the hosted apps are for dashboards and APIs, not for serving a file to every player who joins.

## 2. Get the SHA-1

The checksum tells clients whether the pack they cached is still current. On a Mac or Linux machine:

```
shasum pack.zip
```

On Windows, in PowerShell:

```
Get-FileHash pack.zip -Algorithm SHA1
```

Copy the 40-character hash. Change the hash every time you change the pack, or players keep the old cached copy.

## 3. Put it in server.properties

The panel writes `server.properties` from your settings on every boot, so a hand edit is overwritten unless you take the file over: **Settings**, **Self Manage Server Properties**, on. From then on the file is yours; see [Files](/docs/files/).

Then open **Files**, edit `server.properties`, and set:

```
resource-pack=https://github.com/you/pack/releases/download/v3/pack.zip
resource-pack-sha1=2c3d0e1a4b5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b
require-resource-pack=false
resource-pack-prompt={"text":"This server uses a small texture pack for its custom items."}
```

- `require-resource-pack=true` kicks a player who declines; leave it `false` unless the pack is needed for gameplay.
- `resource-pack-prompt` is the text shown in the download dialog, in Minecraft's JSON text format.

Restart the server. Players who join get the prompt, and the pack downloads before they see the world.

## Checking it works

Join with a fresh client: the download dialog appears, and after accepting, the custom textures show. If the dialog never appears, the URL is not a direct link, or the client has the pack cached under the same hash. If the download fails, open the URL in a browser: it should save a zip, not show a page.

## Notes

- **Bedrock players** through crossplay do not receive Java resource packs. Geyser can translate some packs with extra setup, but plan on Java players only.
- **Modpacks** ship their own client files; a resource pack on top works the same way.
- **1.20.3 and newer** allow several packs (`resource-pack` accepts one; plugins such as ResourcePackManager handle lists). One pack is enough for most servers.
