resourcepack.ai
DOCS

How a pack works

The content folder

One folder per pack, and the folder name is the namespace.

plugins/RPEngine/content/
  mypack/
    pack.yml               required
    items/       *.yml
    sounds/      *.yml
    fonts/       *.yml
    screens/     *.yml
    huds/        *.yml
    recipes/     *.yml
    entities/    *.yml
    liquids/     *.yml
    assets/                → assets/mypack/ in the built pack
      textures/
      models/              Blockbench files
      sounds/
    overrides/             → assets/minecraft/, for replacing vanilla art
    pack.png               optional

The rules#

The category folder decides the kind. Top-level keys in a file are ID paths, so nesting under an items: key would say the same thing twice. One file may declare many; the file name means nothing, and subfolders are organisation only — items/weapons/swords.yml contributes nothing to the ID.

A folder exists only if something reads it. There is no models/ — a placed model is a place: block on the item — no blocks/, and no emotes/. Any other folder is warned about by name, which is what catches item/ and Sounds/.

Errors are collected, never thrown. See reloading.

YAML or TOML#

A definition file may be .yml, .yaml or .toml, and both spellings can sit in the same folder. They produce exactly the same thing — nothing downstream knows which one a definition came from.

[ruby]
material = "DIAMOND"
name = "&cRuby"
 
[chair.place]
facing = "cardinal"
seat = 0.5

Quote an ID with a / or a . in it

Both mean something to TOML, so weapons/sword has to be written ["weapons/sword"]. It is the one thing that catches people out, and the error message says so when it happens.

pack.yml#

As short as a name:

name: My Pack

Or with everything it accepts:

name: My Pack
description: Swords and statues
version: 1.0.0
bundles: [main]      # which built packs this content goes into

bundles: is the only one that changes behaviour — see Bundles. The rest is what a player sees on the pack screen.

assets/ and overrides/#

Two folders, and the difference matters.

assets/ becomes assets/mypack/ in the built pack. It is namespaced, so nothing in it can collide with another pack or with vanilla.

overrides/ becomes assets/minecraft/. It is how you replace vanilla art — a different dirt texture, a new font, a changed sound.

overrides/ is the one place two packs can fight

Two packs both replacing assets/minecraft/textures/block/dirt.png is a real conflict, and the later namespace alphabetically wins. Both are named in a build warning.

It is a separate folder rather than letting a pack write assets/minecraft/ itself, so the risk is visible while somebody is authoring rather than on the day two packs are installed together.

Blockbench files#

assets/models/ holds .bbmodel project files or .json exports. See Items for which to use and why the project file is the answer.