Run function every x seconds

Hey,
I’m new to java and want to create something like a timer, which runs a function every x seconds :smile:

I have following code:

public class BlockBreak{
//call classes
private Logger logger;
private JobManager jobManager;
private UserManager userManager;
private JobActive job;
private User user;
private ArrayList<JobBlock> blocks;
private boolean once = false;


public BlockBreak(Logger logger, UserManager userManager, JobManager jobManager) {
    this.logger = logger;
    this.jobManager = jobManager;
    this.userManager = userManager;
}

@Subscribe
public void onBlockBreak(PlayerBreakBlockEvent event) {
    
    //some code
}
}

I dont want to make a seperat class or something like that. I just want to use a litte function in my class.
I need this, because I want to refresh an object every x seconds…

Greets

You can go see there http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html.

There is a scheduler API built into Sponge, documentation can be found here.

4 Likes

I get “cannot resolve symbol plugin” when I try to use this tool
Any ideas?

Look into PayDay sponge plugin source code. I think thats the best example you can ever get.

Thats exactly what I need, thank you so much!
This is the best way to learn it :smile:
So i will give it a try,
Greets

This should help :smile:

game.getScheduler().createTaskBuilder().execute(new Runnable() {
    public void run() {
       // Run every second
    }
}).interval(1, TimeUnit.SECONDS).name("PluginName - TaskName").submit(this);

Working example:

@Subscribe
public void onServerStart(ServerStartedEvent event) {
    logger.info("Gameserver wurde mit der Cave-Software verbunden!");

    SchedulerService scheduler = game.getScheduler();
    TaskBuilder taskBuilder = scheduler.createTaskBuilder();

    taskBuilder.execute(new Runnable()
    {
        public void run()
        {
            //for(Player player : game.getServer().getOnlinePlayers()){

            //}
        }
    }).interval(60, TimeUnit.SECONDS).name("Jobs Update").submit(game.getPluginManager().getPlugin("CaveAccounts").get().getInstance());
}

Thanks to everyone :slight_smile:

1 Like