CurseForge · Minecraft mod
Effect Control
Highly customizable potion effect applier & remover.
Quick answer
Which Effect Control release should I use?
Effect Control effectcontrol-1.21.1-1.1-neoforge.jar targets 1.21.1 with NeoForge. The project page does not say whether this file belongs on the client, dedicated server, or both. All 1 required mods have matching files.
Where it goes
Is Effect Control required on the client, server, or both?
The project page does not say whether this file belongs on the client, dedicated server, or both.
The source does not explicitly classify this release as client-only or server-only.
What else does Effect Control effectcontrol-1.21.1-1.1-neoforge.jar need?
effectcontrol-1.21.1-1.1-neoforge.jar. Change the file and its required mods may change too.
Install Architectury API first. We found matching files for this game-version and loader setup.
We only count dependency files that match this setup. A file for another loader does not fill the gap.
Before you install it
Add Effect Control without breaking your instance.
Built for Effect Control effectcontrol-1.21.1-1.1-neoforge.jar. Pick another file and the loader, install side or required mods may change.
- 01
Stick to this file
Use effectcontrol-1.21.1-1.1-neoforge.jar. It targets 1.21.1 with NeoForge; another release may have different loader, side or dependency requirements.
- 02
Bring the mods it needs
Install Architectury API first. We found matching files for this game-version and loader setup.
- 03
Put it on the correct side
The project page does not say whether this file belongs on the client, dedicated server, or both.
- 04
Pick the file you checked
Use the “Get this file” button beside effectcontrol-1.21.1-1.1-neoforge.jar. It opens that exact file at the source.
About this project
What does Effect Control add?

Highly customizable potion effect applier & remover.
Effect Control is a compliment for In Control! that adds more control over potion effects.
Config
config/effectcontrol-common.toml
Each entry in effects is one rule: comma separated key=value pairs.
effects = [
"effect=minecraft:strength, duration=30, trigger=kill, entity=minecraft:zombie",
"effect=minecraft:regeneration, duration=20, trigger=consume, item=minecraft:golden_apple",
"effect=minecraft:fire_resistance, duration=infinite, trigger=enter, dimension=minecraft:the_nether",
"effect=minecraft:fire_resistance, trigger=leave, dimension=minecraft:the_nether, action=remove"
]
Effect Attributes
| Key | Meaning | Default |
|---|---|---|
trigger |
What makes the rule activate. | respawn |
effect |
Potion effect id. Required unless the rule only writes flags. | |
duration |
Seconds, or infinite. |
30 |
level |
1 is level I, 2 is level II. |
1 |
action |
give or remove. |
give |
ambient |
Softer beacon particles. | false |
particles |
Show the particles. | true |
icon |
Show the HUD icon. | true |
hidden |
Shorthand for particles=false, icon=false. |
false |
Triggers
Activated by something the player does:
| Trigger | Activates when | Useful filters |
|---|---|---|
join |
Player logs in | |
first_join |
First login ever, once per player | |
respawn |
Player respawns after dying | dimension |
end_return |
Player leaves the End through the exit portal | |
any |
join, respawn or end_return |
|
enter / leave |
Dimension entered / left | dimension (required) |
kill |
Player kills something | entity, source |
hurt |
Player damages something | entity, source |
hurt_by |
Player is damaged | entity, source |
use |
Player right-clicks an item in the air, e.g. an ender pearl or a bucket | item |
consume |
Player finishes eating or drinking | item |
shoot |
Player fires a bow | item |
release |
Player releases a held item, e.g. a trident | item |
pickup |
Player picks an item up | item |
container |
Player opens a container or their inventory | |
advancement |
Player earns an advancement | advancement |
craft / smelt |
Item crafted / smelted | item |
fish |
Player reels something in | item |
tame / breed |
Animal tamed / bred | entity |
trade |
Villager trade completed | item |
level_up |
Player gains XP levels | |
tool_broken |
Held item breaks | item |
Continuous player state, activated when entering or leaving it. They come in pairs, so you pair the give with the matching remove:
| Trigger | Becomes true when | Needs |
|---|---|---|
near / away |
Something is within radius |
radius and block or entity |
looking / not_looking |
Player is looking at it | block or entity, radius optional (default 5) |
sneaking / not_sneaking |
Player is crouching | |
sprinting / not_sprinting |
Player is sprinting | |
on_fire / not_on_fire |
Player is burning | |
in_fluid / not_in_fluid |
Player is in a fluid | fluid |
riding / not_riding |
Player is on a mount | entity optional |
sleeping / not_sleeping |
Player is in a bed | |
underwater / not_underwater |
Player's head is submerged |
Most triggers accept alternative spellings, so write whichever you prefer. damage or attack for hurt; takedamagefrom or damaged_by for hurt_by; eat or drink for consume; use_item or interact for use; inventory or open for container; achievement for advancement; always for any; every_join or login for join; every_respawn or death for respawn; end for end_return; enter_dimension for enter; leave_dimension or exit for leave; fire for shoot; when_near for near; not_near or leave_near for away; once for first_join; look or looking_at for looking; look_away for not_looking; sneak or crouching for sneaking; sprint for sprinting; burning for on_fire; mounted for riding; dismounted for not_riding; asleep for sleeping; awake for not_sleeping; submerged for underwater; in_liquid / not_in_liquid for in_fluid / not_in_fluid; levelup for level_up; item_broken for tool_broken.
Filter keys have aliases too: mob for entity, armor for wearing, damage_type for source, liquid for fluid, xp for xp_level, tag for nbt, has/without for requires/missing, and set_flag/clear_flag/flagged/unflagged for set/unset/if_set/if_unset.
Filters
Any of these narrow a rule. Repeat a key to accept more than one value; the rule needs one match from each key you used.
| Key | Matches | Example |
|---|---|---|
dimension |
Dimension the rule is about | dimension=minecraft:the_nether |
block |
Block id | block=minecraft:diamond_ore |
entity |
Entity type id | entity=minecraft:creeper |
item |
Item id | item=minecraft:golden_apple |
source |
Damage type, as vanilla names it | source=lava |
advancement |
Advancement id | advancement=minecraft:story/mine_diamond |
radius |
Blocks, 1 to 64 |
radius=8 |
x y z |
Coordinate, exact or a range | y=50..100, y=..0, x=64.. |
time |
Day tick 0..24000, or a name |
time=night, time=0..6000 |
weather |
clear, rain or thunder |
weather=thunder |
days |
In-world days elapsed | days=100.. |
stat + count |
A player statistic and its value | stat=killed:minecraft:zombie, count=100.. |
nbt |
Item NBT, matched as a subset | nbt={Damage:0} |
health |
Player health in points | health=..6 |
xp_level |
Experience level | xp_level=30.. |
light |
Light level where the player stands | light=..7 |
biome |
Biome id | biome=minecraft:desert |
tag |
Scoreboard tag on the player | tag=vip |
gamemode |
survival creative adventure spectator |
gamemode=survival |
difficulty |
peaceful easy normal hard |
difficulty=hard |
wearing |
Item worn in an armor slot | wearing=minecraft:diamond_helmet |
fluid |
water or lava |
fluid=lava |
chance |
Percent chance the rule fires, 1 to 100 |
chance=25 |
cooldown |
Seconds before the rule may fire again | cooldown=60 |
Time names: day, night, noon, midnight, sunrise (or dawn), sunset (or dusk).
Stat types: mined, killed, killed_by, used, crafted, broken, picked_up, dropped, custom. count defaults to 1.., meaning at least once.
Everything from x downwards works on every trigger:
effects = [
"effect=minecraft:poison, duration=10, trigger=pickup, item=minecraft:diamond, y=..0, time=night",
"effect=minecraft:strength, duration=60, trigger=join, stat=killed:minecraft:zombie, count=100.."
]
Conditions
requires and missing gate a rule on effects the player already has. Both repeat, and all must pass. has and without are aliases.
effects = [
"effect=minecraft:regeneration, duration=15, trigger=join, requires=minecraft:poison",
"effect=minecraft:strength, duration=30, trigger=respawn, missing=minecraft:weakness"
]
Conditions read the player's state from before the rule set runs, so rules in one event cannot see each other's work. A rule blocked by a condition does not count against its limit.
Flags
Flags are permanent per-player marks, saved in the world. You can use them to make something like "once this happens, never again".
| Key | Does |
|---|---|
set |
Set the flag when the rule fires |
unset |
Clear the flag when the rule fires |
if_set |
Only fire if the flag is set |
if_unset |
Only fire if the flag is not set |
effects = [
"trigger=advancement, advancement=minecraft:end/kill_dragon, set=dragon_slain",
"effect=minecraft:strength, duration=60, trigger=join, if_unset=dragon_slain",
"trigger=consume, item=minecraft:milk_bucket, unset=dragon_slain"
]
Kill the dragon and the strength stops forever. Drink milk and it comes back. A rule that only writes flags needs no effect.
Curios
The wearing filter checks armour slots and, when Curios is installed, curio slots as well:
effects = [
"effect=minecraft:speed, duration=30, trigger=consume, item=minecraft:bread, wearing=curios:ring"
]
Limits
limit stops a rule after that many grants per player, 0 never stops. id names the counter, defaulting to the effect, trigger and filters combined, so give two rules the same id when they should share a counter.
Timing
apply_delay_ticks (0 to 200) waits before applying. Use it if another mod clears effects when a player spawns.
scan_interval_ticks (1 to 200, default 20) is how often the continuous triggers re-check. Block scans for near sweep a sphere of radius.
Command
This clears saved limit counters and flags.
| Command | Clears |
|---|---|
/effectcontrol reset |
Whoever ran it |
/effectcontrol reset <targets> |
The players a selector picks out |
/effectcontrol reset all |
Every stored player, online or not |
Notes
Effects, blocks, items, entities and dimensions from other mods all work, just use their ids. A namespace-less id is assumed to be minecraft:. Entries that cannot be read are skipped and reported in the log, as is any id that is not installed.
FAQ
**Found a bug?**Submit a issue request on the Github issues page with:
- A description of the problem.
- Any relevant logs.
- The version of Effect Control.
- What loader you are using (ex: Forge 1.20.1, NeoForge 1.21.1)
Want to suggest a feature?
You can submit a feature request in the Github issues page or in the comments.
Project description from CurseForge.
Pick your setup
Effect Control by Minecraft version and loader
Choose the version and loader you play, then open the matching release.
1.21.1
1 loader build1.20.1
1 loader buildCheck the dependencies, then try the file in a copied instance before changing a world you care about.
Recent files
Effect Control versions and loaders
effectcontrol-1.21.1-1.1-neoforge.jar
21 Sept 2026
effectcontrol-1.20.1-1.1-forge.jar
21 Sept 2026
effectcontrol-1.21.1-1.0-neoforge.jar
8 Sept 2026
effectcontrol-1.20.1-1.0-forge.jar
8 Sept 2026
Looking for an older file? The official CurseForge project page is in Resources.