Skip to content

Creating your first pack

Erwin Redoté edited this page May 2, 2026 · 2 revisions

Creating Your First Content Pack

Now that you understand the content pack architecture, let’s create your first pack step by step.


🧱 Setting Up Your Development Environment

To get started, simply create a new folder inside the content-pack directory. .minecraft/ # Or your launcher instance folder
├── content-pack/
└── your_pack_name/

⚠️ Important:

  • Use only lowercase letters in folder names.
  • Avoid spaces and special characters to prevent issues when loading your pack.

✅ Example folder name: my_devil_pack_from_2025

  • The JSONs file name are the object unique identifier, so use only lowercase letters, numbers, underscores (_) and hyphens (-). Plus we recommend to have a prefix/suffix related to your pack or name to avoid name conflicts with other packs (e.g., niwer_m4a1.json).

🗂️ Creating the Base Files

Once your folder is created, you’ll need to add a few essential files and directories to define your pack.

1. pack.json

Create a file named pack.json inside your pack’s root folder.
Example:

{
  "description": "My Content Pack made with love",
  "version": "1.0.0",                      // Version of your pack
  "compatibleVersions": "ALL",             // Prevents the pack from loading on incompatible versions
  "author": [                              // List of authors
    "Niwer_"
  ],
  "tags": [                                // Tags used to help users filter packs
    "guns",
    "s.c.p",
    "zombies"
  ]
}

2. pack.mcmeta (Optional)

You can manually create a pack.mcmeta file if you wish, but the system will automatically generate one if it’s missing.

  1. banner.png (Optional) Add a banner.png (or any supported image format) to visually represent your pack in the game’s interface.

🎨 Creating the Assets Folder

Inside your pack folder, create the following directory structure:
your_pack_name/
└── assets/
└── niwer_engine/
The assets folder works exactly like a Minecraft resource pack — you can override textures, models, and sounds from vanilla, other mods, or even other content packs.

Note for textures : We support multiple image formats including .png, .jpg, and .jpeg and even .webp for better compression. BUT we recommend using .png for maximum compatibility, the content-pack system will automatically convert other formats to a custom one (Based on WEBP).

Also we support texture that arn't multiple of 16, but for best results we recommend using power of two dimensions (e.g., 16x16, 32x32, 64x64, etc.).


📊 Common Data Types

When creating your content pack, you’ll frequently use the ItemStack, ContentPackSound, or Vector3 data types to define items and their quantities.

ItemStack parameters

  • name : String — The name of the item (should match an existing item in the game as modid:item_name). E.G : "lemon", "niwer_engine:monster", "minecraft:apple".
  • count : Integer — The quantity of the item (must be greater than 0).
  • and : ItemStack — An additional ItemStack to combine with this one.
{
  "name": "lemon",
  "count": 5,
  "and": {
    "name": "minecraft:apple",
    "count": 3
  }
}

ContentPackSound parameters

  • referTo : List<String> — List of sound names to refer to existing sounds defined elsewhere in the content pack. This is not used to create a sound but a list of multiple sound instance. (And each instance can have multiple sounds files if multiSound > 1)

  • name : String — The name of the sound.

  • path : String — The path to the sound file (without file extension), relative to the assets/niwer_engine/sounds/ folder.

  • category : String — The sound category (e.g., "BLOCKS", "MUSIC", "RECORDS", "WEATHER", "HOSTILE", "NEUTRAL", "PLAYERS", "AMBIENT", "VOICE").

  • multiSound : Integer — The number of different sound variations available for this sound. Will search for files with suffixes _1, _2, etc.

  • volume : Float — The volume of the sound (default is 1.0).

  • pitch : Float — The pitch of the sound (default is 1.0).

  • chance : Float — The chance (between 0.0 and 1.0) of the sound being played when triggered (default is 1.0).

  • startDayTime : Integer — The in-game time (in ticks) when the sound can start playing (default is -1).

  • endDayTime : Integer — The in-game time (in ticks) when the sound stops playing (default is -1).

  • offsetX : Float — The X offset for the sound position (default is 0.0).

  • offsetY : Float — The Y offset for the sound position (default is 0.0).

  • offsetZ : Float — The Z offset for the sound position (default is 0.0).

{
  "name": "entity.zombie.ambient",
  "path": "entity/zombie/ambient",
  "category": "HOSTILE",
  "multiSound": 4
}

Vector3 parameters

  • x : Float — The X coordinate.
  • y : Float — The Y coordinate.
  • z : Float — The Z coordinate.
{
  "x": 10.5,
  "y": 64.0,
  "z": -23.3
}

📄 Common JSON parameters

Language Localization

To add localized display names or descriptions for your items, entities, props, or other content pack elements, use the displayNames parameter with language codes as keys.

"displayNames": {
  "en": "Health Potion",
  "fr": "Potion de Santé",
  "es": "Poción de Salud"
}

Categories

This are the sub categories the item or prop belongs to (The boolean is deprecated and has no effect)

"categories": { "medicines": false }

Item Inventory Volume

The space an item occupies in an inventory grid. In this example, the item occupies 2 slots in width and 1 slot in height.

"inventoryVolume": {
  "x": 2,
  "y": 1
}

Item Storage Capacity

The storage capacity of an item that can hold other items (like backpacks or containers). In this example, the item can store items in a grid of 3 slots in width and 2 slots in height.

"storage": {
  "x": 3,
  "y": 2
}

🖨️ Model Parameters

Every object that uses a 3D model (props, grenades, melee, firearms, vehicles, etc.) share common model parameters. See 3D Models and Animations for more details on how to use and configure 3D models and animations.


✅ Next Step

Once these basics are ready, you can start creating your items, entities, props, and more!

Blocks/Props

Continue with : creating a basic block

Items

continue with : creating a basic item

Entities

continue with : creating a vehicle

Miscellaneous

continue with : creating a loot table

Clone this wiki locally