Skip to content

Resource Pack

Nacvark edited this page Jul 29, 2026 · 5 revisions

🌎 Choose language: EN — English · RU — Русский

Resource pack

Getting it to players

resource-pack:
  delivery: none   # none | url | host
  • none — the file is built and left in build/. Use this if you already distribute packs.
  • url — the pack is published somewhere; that address is sent to players.
  • host — a small built-in HTTP server hands it out. Set host.public-url to an address reachable from outside, not localhost, and forward the port.

The hash is computed from the file that was actually built and recomputed on every reload. It is never something you type, because a stale hash makes every client re-download the pack on every join.

Already sending your own packs? List them under extra-packs and everything arrives in one prompt. Since 1.20.3 the client stacks packs instead of replacing them, so nothing needs merging. resource-pack.position decides where ours sits in that stack.

Hiding the vanilla HUD

If your HUD draws its own health and hunger, the vanilla ones underneath make the screen into two interfaces at once. There is no game setting for it, so the pack blanks their sprites:

hide-vanilla-hud:
  health: true
  food: true
  armor: false

Available: health, food, armor, air, experience-bar, hotbar, crosshair, effects, jump-bar, level-text.

level-text is the experience level number above the hotbar. It is the only one that is text rather than a sprite, so the shader hides it instead of the pack, but it is switched on in the same place as the rest.

Vanilla hidden

One caveat: if you send other resource packs too, one of them can put those sprites back. If hidden things reappear, resource-pack.position is the setting to change.

One pack, every version

A single archive serves Minecraft 1.21.4 through 26.2. The client picks what applies to it through pack overlays, so there is nothing to choose and nothing to build twice.

This matters because Mojang rewrote the text shader three times in that range and renamed it once. The pack carries a variant for each and declares the format range each one covers. Formats below 65 also need the older supported_formats spelling, which the pack emits alongside the new one.

Builds are deterministic: the same configuration produces a byte-identical archive, so the hash does not change and clients do not re-download a pack they already have.

Clone this wiki locally