reload services and add ids to notes

This commit is contained in:
Taah
2022-04-06 19:05:29 -07:00
parent 48bf9bdbe5
commit 34d1eafaaf
6 changed files with 75 additions and 27 deletions

View File

@ -18,4 +18,14 @@ public abstract class AbstractService extends PlexBase implements IService
this.repeating = repeating;
this.asynchronous = async;
}
public void onStart()
{
}
public void onEnd()
{
}
}

View File

@ -27,22 +27,15 @@ public class ServiceManager
{
for (AbstractService service : services)
{
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());
}
startService(service);
}
}
public void endServices()
{
services.forEach(this::endService);
}
public AbstractService getService(Class<? extends AbstractService> clazz)
{
return services.stream().filter(service -> service.getClass().isAssignableFrom(clazz)).findFirst().orElse(null);
@ -63,11 +56,26 @@ public class ServiceManager
BukkitTask task = Bukkit.getScheduler().runTaskTimer(Plex.get(), service::run, 0, 20L * service.repeatInSeconds());
service.setTaskId(task.getTaskId());
}
if (!services.contains(service))
{
services.add(service);
}
service.onStart();
}
public void endService(AbstractService service, boolean remove)
{
Bukkit.getScheduler().cancelTask(service.getTaskId());
service.onEnd();
if (remove)
{
services.remove(service);
}
}
public void endService(AbstractService service)
{
Bukkit.getScheduler().cancelTask(service.getTaskId());
endService(service, false);
}
private void registerService(AbstractService service)