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
- The color matches the in-world story role.
- The visible name explains what the potion is in RP terms.
- The hidden data is predictable enough for staff to maintain.
- The tooltip does not drown players in raw admin structure.
Good RP use cases
- Medic tinctures with mild speed and regeneration.
- Investigator elixirs with night vision and short invisibility.
- Faction tonics with different bottle colors but shared base logic.
- Quest-only brews with a readable name and custom model.
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
- Choose potion type and target version.
- Pick the visible identity: name, lore, model, bottle style.
- Compose effects inside
potion_contents. - Test the item in-game and verify tooltip readability.