diff --git a/core/src/main/java/org/geysermc/floodgate/news/NewsChecker.java b/core/src/main/java/org/geysermc/floodgate/news/NewsChecker.java index a653ca59..cdbeed07 100644 --- a/core/src/main/java/org/geysermc/floodgate/news/NewsChecker.java +++ b/core/src/main/java/org/geysermc/floodgate/news/NewsChecker.java @@ -34,10 +34,14 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import org.geysermc.event.Listener; +import org.geysermc.event.subscribe.Subscribe; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.command.util.Permission; +import org.geysermc.floodgate.event.ShutdownEvent; import org.geysermc.floodgate.news.data.AnnouncementData; import org.geysermc.floodgate.news.data.BuildSpecificData; import org.geysermc.floodgate.news.data.CheckAfterData; @@ -48,11 +52,10 @@ import org.geysermc.floodgate.util.HttpClient; import org.geysermc.floodgate.util.HttpClient.HttpResponse; @AutoBind +@Listener public class NewsChecker { + private final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); private final Map activeNewsItems = new HashMap<>(); - @Inject - @Named("commonPool") - private ScheduledExecutorService executorService; @Inject private CommandUtil commandUtil; @@ -196,6 +199,15 @@ public class NewsChecker { activateNews(item); } + public void shutdown() { + executorService.shutdown(); + } + + @Subscribe + public void onShutdown(ShutdownEvent ignored) { + shutdown(); + } + private void activateNews(NewsItem item) { for (NewsItemAction action : item.getActions()) { handleNewsItem(null, item, action);