Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.bukkit.plugin.Plugin;
- import org.bukkit.scheduler.BukkitRunnable;
- import org.bukkit.scheduler.BukkitTask;
- // Author: Dymeth.Ru
- public abstract class ChangeablePeriodTask extends BukkitRunnable {
- public long periodTicks; // Количество тиков между циклами
- private long delayTicks; // Количество тиков до отработки следующего цикла
- public ChangeablePeriodTask() {
- }
- @Override
- public final void run() {
- if (--this.delayTicks > 0) return;
- try {
- this.runCycle();
- } finally {
- this.delayTicks = this.periodTicks;
- }
- }
- public abstract void runCycle();
- @Override
- public BukkitTask runTask(Plugin plugin) throws IllegalArgumentException, IllegalStateException {
- throw new UnsupportedOperationException("Timers supported only");
- }
- @Override
- public BukkitTask runTaskAsynchronously(Plugin plugin) throws IllegalArgumentException, IllegalStateException {
- throw new UnsupportedOperationException("Timers supported only");
- }
- @Override
- public BukkitTask runTaskLater(Plugin plugin, long delay) throws IllegalArgumentException, IllegalStateException {
- throw new UnsupportedOperationException("Timers supported only");
- }
- @Override
- public BukkitTask runTaskLaterAsynchronously(Plugin plugin, long delay) throws IllegalArgumentException, IllegalStateException {
- throw new UnsupportedOperationException("Timers supported only");
- }
- @Override
- public synchronized BukkitTask runTaskTimer(Plugin plugin, long delay, long period) throws IllegalArgumentException, IllegalStateException {
- this.setPeriodTicks(period);
- this.setDelayTicks(delay + 1);
- return super.runTaskTimer(plugin, 1L, 1L);
- }
- @Override
- public synchronized BukkitTask runTaskTimerAsynchronously(Plugin plugin, long delay, long period) throws IllegalArgumentException, IllegalStateException {
- this.setPeriodTicks(period);
- this.setDelayTicks(delay + 1);
- return super.runTaskTimerAsynchronously(plugin, 1L, 1L);
- }
- public long getPeriodTicks() {
- return this.periodTicks;
- }
- public void setPeriodTicks(long periodTicks) {
- if (periodTicks <= 0) throw new IllegalArgumentException("periodTicks must be > 0");
- this.periodTicks = periodTicks;
- }
- private void setDelayTicks(long delayTicks) {
- if (delayTicks < 0) throw new IllegalArgumentException("delayTicks must be >= 0");
- this.delayTicks = delayTicks;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment