← All articles

Smart Custom Potions in Minecraft 1.21.4: Working with potion_contents

The new potion system is one of the cleanest examples of why the component era is actually useful. Instead of forcing everything into a single old tag blob, the item now tells you directly what its potion payload is supposed to be.

Open potion builder

Why potion_contents matters

In 1.21.4 a custom potion no longer has to feel like a mysterious NBT object. The important part of the payload now lives in a dedicated component that clearly describes potion color, custom effects, and the base potion entry when you use one.

Typical component shape

minecraft:potion_contents={
  custom_color:11750815,
  custom_effects:[
    {id:"minecraft:speed",amplifier:1,duration:2400},
    {id:"minecraft:night_vision",duration:2400}
  ]
}

What makes a potion feel smart

Good RP use cases

Pairing with other components

A smart potion usually combines minecraft:potion_contents with at least a custom name, lore, and sometimes minecraft:custom_model_data. That is what turns a raw mechanics item into something that feels authored for your server world.

When to avoid overdesign

If every potion has too many effects, too much lore, and too much visual noise, players stop understanding what they are drinking. Use the component system to make potions cleaner, not busier.

Builder workflow

  1. Choose potion type and target version.
  2. Pick the visible identity: name, lore, model, bottle style.
  3. Compose effects inside potion_contents.
  4. Test the item in-game and verify tooltip readability.