is there a way to calculate the greater and smaller of player scoreboard values in minecraft?
The way to test for scores you can do with this command:
execute as @a[scores={Anger=300..1000}] if entity @s run effect give @s levitation 1 0
This will give all players with the Anger
score a levitation effect for 1 second with the amplifier of 1, the 0
at the end is the amplifier, i.e. 0
will give you an amplifier of 1, 1
will give you an amplifier of 2, etc.
You can also add true
at the end to hide the effect particles:
effect give @s levitation 1 0 true
The first command will test for when a player has an Anger
score from 300 to 1000. I don't really know how to make a randomizer but if you use another scoreboard
you can add the levitation effect every 20 seconds or whatever delay you'd like.
/scoreboard objectives add Random dummy
Then you can put this in a repeating command block:
scoreboard players add @a Random 1
This will add 1 point every 20:th of a second to the score, so 20 points a second. Using this you can test for how many seconds you'd like the delay to be by just testing for a score 20 times bigger, lets say we want a 20-second delay:
execute as @a[scores={Random=400..400,Anger=300..1000}] if entity @s run
effect give @s levitation 1 0
After this you put a chain command block with a command that resets the Random
score:
execute as @a[scores={Random=400..400,Anger=300..1000}] if entity @s run
scoreboard players set @s Random 0
You can do the same with the above 1000 scenario, and you can add another dummy score if you'd like the delay to be different from your first.
About the score
testing:
When you test for a score you do that within the target selector, @a[scores={"here"}]
. You specify the score's name first, @a[scores={Anger=}
, then you add the score you'd like to test for using 2 dots ..
. In front of the dots is the minimum score, and after is the maximum score, If I'd like to test for a score from 0 to 347 I'd write:
execute as @a[scores={Anger=..347}] if entity @s run *command*
And if I'd like to test for a score of 1000 or more I'd write:
execute as @a[scores={Anger=1000..}] if entity @s run *command*
Make sure to add the if entity @s
after the selector @a[]
. This makes sure the command only runs when the players' scores actually are correct, so the player doesn't get stuck in a loop.