Datapack-driven item potion effects, set bonuses, Curios support, and loot table injections.
This project exists in two versions:
Forge 1.20.1NeoForge 1.21.1Both versions share the same core idea and almost the same datapack workflow, so pack makers can use one system across both branches.
With this mod, you can:
nbtForge1.20.1Potion Effects SetImportant note:
nbt matches normal item NBT dataNeoForge1.21.1Neo Pot Effect SetImportant note:
nbt in the JSONcustom_data componentThat means the config format stays familiar, even though Minecraft changed how custom item data is stored.
Both versions support:
minecraft:diamond_sword#mymod:guardian_armorrules matcherssets and set_bonusesloot_table_injections{
"minecraft:diamond_sword": {
"on_hit_effects": [
{
"effect": "minecraft:poison",
"amplifier": 1,
"duration": 100,
"chance": 0.3,
"slot": "mainhand"
}
]
}
}
This applies Poison II for 5 seconds with a 30% chance when the sword hits in the main hand.
Use tags when many items should share the same effect setup.
{
"#mymod:guardian_armor": {
"passive_effects": [
{
"effect": "minecraft:resistance",
"amplifier": 0,
"permanent": true
}
]
}
}
rulesUse rules when the same base item can exist in different variants.
{
"rules": [
{
"match": {
"item": "minecraft:diamond_chestplate",
"nbt": {
"pem": {
"set_id": "guardian"
}
}
},
"passive_effects": [
{
"effect": "minecraft:resistance",
"amplifier": 1,
"permanent": true,
"slot": "chest"
}
]
}
]
}
Recommended pattern:
pemset_id, role, variant, or raritySets let you unlock stronger bonuses as more matching pieces are equipped.
{
"sets": [
{
"id": "guardian",
"display_name": "Guardian Set",
"piece_match": {
"tag": "mymod:guardian_set"
},
"tiers": [
{
"required_pieces": 2,
"passive_effects": [
{
"effect": "minecraft:resistance",
"amplifier": 0,
"permanent": true
}
]
},
{
"required_pieces": 4,
"passive_effects": [
{
"effect": "minecraft:resistance",
"amplifier": 1,
"permanent": true
},
{
"effect": "minecraft:absorption",
"amplifier": 0,
"permanent": true
}
]
}
]
}
]
}
Set counting includes:
Curios note:
The mod can add your custom items into existing loot tables without replacing them.
{
"inject": [
{
"targets": [
"minecraft:chests/simple_dungeon",
"minecraft:chests/abandoned_mineshaft"
],
"loot_table": "mypack:chests/arcane_rewards",
"rolls": 1,
"chance": 0.25
}
]
}
{
"inject": [
{
"targets": ["minecraft:chests/simple_dungeon"],
"rolls": 1,
"chance": 0.2,
"items": [
{
"item": "minecraft:totem_of_undying",
"name": "Offhand Totem",
"nbt": {
"pem": {
"role": "offhand_totem"
}
}
}
]
}
]
}
Simple rule:
item or #tag, players can obtain the base item normallynbt, the game needs some way to generate that special variantCommon ways to generate those items:
KubeJS or CraftTweakerIf multiple active sources grant the same mob effect:
That means a 2-piece set can give Strength I, and a 4-piece tier can upgrade that to Strength II, while another set can still coexist if it gives a different effect like Speed.
Tooltips can show:
If you want one datapack-driven system for:
this mod is built for exactly that.
For a more detailed tutorial and extra help, join the Discord:
</details>
<details>
<summary><strong>👟 Example: Speed Boots</strong></summary>
Gives Speed II while worn.
```json
{
"minecraft:golden_boots": {
"passive_effects": [
{
"effect": "minecraft:speed",
"amplifier": 1,
"permanent": true,
"slot": "feet"
}
]
}
}
Grants Invisibility while worn in a 'ring' slot.
{
"curios:ring_gold": {
"passive_effects": [
{
"effect": "minecraft:invisibility",
"amplifier": 0,
"permanent": true,
"slot": "ring",
"is_curio": true
}
]
}
}
world/datapacks/<name>/data/potioneffectsmodify/potion_effects/your_file.json
| Property | Type | Description |
|---|---|---|
effect | ID | The potion effect ID (e.g., minecraft:strength) |
amplifier | Int | Level of the effect (0 = Level I, 1 = Level II) |
duration | Int | Duration in ticks (20 ticks = 1 second) |
chance | Float | Probability (0.0 to 1.0) for On Hit/On Hurt |
slot | String | Required slot (mainhand, head, feet, curios:ring, etc.) |
permanent | Bool | If true, effect refreshes automatically (for passive) |
is_curio | Bool | Set to true if targeting a Curios slot |
mods folder./reload in-game to apply changes instantly!Please join our Discord for support, suggestions, or to share your configs!

Grant potion effects to your items