Skip to content

Bukkit schedulers

kiinse edited this page Mar 24, 2023 · 2 revisions

Create scheduler

MineCore provides a convenient Bukkit Scheduler control. Each scheduler must have its own class inherited from Scheduler.

import kiinse.me.plugins.minecore.api.MineCorePlugin;
import kiinse.me.plugins.minecore.api.schedulers.Scheduler;
import kiinse.me.plugins.minecore.api.schedulers.SchedulerData;

@SchedulerData(
        name = "TestSchedule", // The default value here is a set of random characters
        delay = 0L, // Default value
        period = 20L // Default value
        )
public class TestScheduler extends Scheduler {

    public TestScheduler(MineCorePlugin plugin) {
        super(plugin);
    }

    @Override
    public boolean canStart() {
        // Here you can add a condition under which the bukkit scheduler will be launched when it is registered. This method is optional. It returns true by default.
        return true;
    }

    @Override
    public void run() {
        // Code that runs every second
    }
}

Register scheduler

Then we register it in the SchedulersManager

import kiinse.me.plugins.minecore.api.MineCorePlugin;
import kiinse.me.plugins.minecore.api.schedulers.Scheduler;
import kiinse.me.plugins.minecore.api.schedulers.SchedulersManager;

public class TestPlugin extends MineCorePlugin {

    private SchedulersManager schedulersManager;
    private Scheduler testScheduler;

    @Override
    public void onStart() throws Exception {
        schedulersManager = getMineCore().getSchedulersManager();
        // Getting SchedulersManager from DarkWaterAPI

        testScheduler = new TestScheduler(this);
        // Initializing Scheduler

        schedulersManager.register(testScheduler);
        // Registering Scheduler and turn it on
    }

    @Override
    public void onStop() throws Exception {
        schedulersManager.unregister(testScheduler);
        // Unregistering Scheduler and turn it off
    }

    public void manuallyStart() {
        // It is also possible to run this Scheduler yourself.
        testScheduler
                .setName("Name")
                .setPeriod(20L)
                .setDelay(0L)
                .start();
    }
}