mirror of
https://github.com/plexusorg/Plex.git
synced 2025-07-03 08:26:42 +00:00
begin notes system
store task id
This commit is contained in:
@ -1,25 +1,21 @@
|
||||
package dev.plex.services;
|
||||
|
||||
import dev.plex.PlexBase;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
public abstract class AbstractService extends PlexBase implements IService
|
||||
{
|
||||
private boolean asynchronous;
|
||||
private boolean repeating;
|
||||
|
||||
@Setter
|
||||
private int taskId;
|
||||
|
||||
public AbstractService(boolean repeating, boolean async)
|
||||
{
|
||||
this.repeating = repeating;
|
||||
this.asynchronous = async;
|
||||
}
|
||||
|
||||
public boolean isRepeating()
|
||||
{
|
||||
return repeating;
|
||||
}
|
||||
|
||||
public boolean isAsynchronous()
|
||||
{
|
||||
return asynchronous;
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,10 @@ import dev.plex.Plex;
|
||||
import dev.plex.services.impl.BanService;
|
||||
import dev.plex.services.impl.GameRuleService;
|
||||
import dev.plex.services.impl.UpdateCheckerService;
|
||||
import java.util.List;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ServiceManager
|
||||
{
|
||||
@ -25,19 +27,47 @@ public class ServiceManager
|
||||
{
|
||||
if (!service.isRepeating())
|
||||
{
|
||||
Bukkit.getScheduler().runTask(Plex.get(), service::run);
|
||||
}
|
||||
else if (service.isRepeating() && service.isAsynchronous())
|
||||
BukkitTask task = Bukkit.getScheduler().runTask(Plex.get(), service::run);
|
||||
service.setTaskId(task.getTaskId());
|
||||
} else if (service.isRepeating() && service.isAsynchronous())
|
||||
{
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(Plex.get(), service::run, 0, 20L * service.repeatInSeconds());
|
||||
}
|
||||
else if (service.isRepeating() && !service.isAsynchronous())
|
||||
BukkitTask task = Bukkit.getScheduler().runTaskTimerAsynchronously(Plex.get(), service::run, 0, 20L * service.repeatInSeconds());
|
||||
service.setTaskId(task.getTaskId());
|
||||
} else if (service.isRepeating() && !service.isAsynchronous())
|
||||
{
|
||||
Bukkit.getScheduler().runTaskTimer(Plex.get(), service::run, 0, 20L * service.repeatInSeconds());
|
||||
BukkitTask task = Bukkit.getScheduler().runTaskTimer(Plex.get(), service::run, 0, 20L * service.repeatInSeconds());
|
||||
service.setTaskId(task.getTaskId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public AbstractService getService(Class<? extends AbstractService> clazz)
|
||||
{
|
||||
return services.stream().filter(service -> service.getClass().isAssignableFrom(clazz)).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
public void startService(AbstractService service)
|
||||
{
|
||||
if (!service.isRepeating())
|
||||
{
|
||||
BukkitTask task = Bukkit.getScheduler().runTask(Plex.get(), service::run);
|
||||
service.setTaskId(task.getTaskId());
|
||||
} else if (service.isRepeating() && service.isAsynchronous())
|
||||
{
|
||||
BukkitTask task = Bukkit.getScheduler().runTaskTimerAsynchronously(Plex.get(), service::run, 0, 20L * service.repeatInSeconds());
|
||||
service.setTaskId(task.getTaskId());
|
||||
} else if (service.isRepeating() && !service.isAsynchronous())
|
||||
{
|
||||
BukkitTask task = Bukkit.getScheduler().runTaskTimer(Plex.get(), service::run, 0, 20L * service.repeatInSeconds());
|
||||
service.setTaskId(task.getTaskId());
|
||||
}
|
||||
}
|
||||
|
||||
public void endService(AbstractService service)
|
||||
{
|
||||
Bukkit.getScheduler().cancelTask(service.getTaskId());
|
||||
}
|
||||
|
||||
private void registerService(AbstractService service)
|
||||
{
|
||||
services.add(service);
|
||||
|
Reference in New Issue
Block a user