TransWikia.com

How to check for something every tick, but only run a command one time when the condition is met?

Arqade Asked by Lapraniteon on August 30, 2021

I’m making a Minecraft 1.16 datapack and I need to check if a player is in a certain location. I want to check for that condition every tick and then run a function when it is met.

I’m currently using this command: execute as @a[x = 10, y = 56, z = 42, dx = 8, dy = 10, dz = 0] run say Passed
The problem is that when the condition is met, the run say Passed part also executes every tick, which is not what I want.

When the condition is met, I want that command to only run once, and not every tick, while still checking the condition every tick.
But, I also want the command to be able to run again after a second or so.

Could I do this by checking the condition every tick, then running a function that has a timer that only executes a command if it was previously executed 1 or more seconds ago?

One Answer

you could make a scoreboard that stores a timer, that counts down to 0 and once that 0 is hit, the command can be run again setup:

/scoreboard objectives add Timers dummy

so you'll run these functions each tick:

execute if score FunctionX Timers matches 1.. run scoreboard players remove FunctionX Timers 1
execute if score FunctionX Timers matches 0 run execute as @a[x = 10, y = 56, z = 42, dx = 8, dy = 10, dz = 0] run function <namespace>:passed

and in passed.mcfunction

scoreboard players add FunctionX Timers 20
say passed

this will make the command run only every 20 gameticks

Correct answer by jklw10 on August 30, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP