Specified effect data
Solution 1:
You would have to have to create a function or command block chain for this. Something like:
effect give @a[scores={<objective_name>=1}] minecraft:poison <duration> 0 true
effect give @a[scores={<objective_name>=2}] minecraft:poison <duration> 1 true
effect give @a[scores={<objective_name>=3}] minecraft:poison <duration> 2 true
- and so on...
(Effect amplifiers start at 0 in commands, an amplifier of 0 shows up as 1 in the status effect list on the side of your inventory screen, an amplifier of 1 shows up as 2, and so on...)
You might have been able to do this with only one command if /data
allowed modifying player data, but that might not ever be a feature...
Solution 2:
If you don't need too many levels of poison, the previously posted answer is the best way to approach this. However, should you need upwards of 10 or so levels of poison, you could do something dynamic.
You'll need a second scoreboard objective for tracking the player's actual poison amplifier, which I've called poison_real
In a repeating chain, here's what you could do:
execute as @a store result score @s poison_real run data get entity @s ActiveEffects[{Id:19b}].Amplifier
-
effect give @a[scores={poison_level=1}] minecraft:poison 999999 0
(only applies when setting someone's score from 0 to 1) scoreboard players remove @a poison_level 1
execute as @a at @s unless entity @e[type=minecraft:area_effect_cloud,name="poison_cloud",distance=..0.1] unless score @s poison_level = @s poison_real run effect clear @s minecraft:poison
execute as @a[scores={poison_level=0..}] at @s unless score @s poison_level = @s poison_real run summon minecraft:area_effect_cloud ~ ~ ~ {Radius:0.1f,CustomName:'"poison_cloud"',Duration:7b,Effects:[{Id:19b,Amplifier:0,Duration:999999}]}
execute as @e[type=minecraft:area_effect_cloud,name="poison_cloud"] at @s store result entity @s Effects[{Id:19b}].Amplifier int 1 run scoreboard players get @p poison_level
scoreboard players add @a poison_level 1
This chain detects a change in the poison_level
score, and if there is a change, it summons an area effect cloud with an Amplifier of the player's poison_level
.