|
5 | 5 | import org.bukkit.entity.Player; |
6 | 6 | import org.bukkit.metadata.MetadataValue; |
7 | 7 | import org.bukkit.plugin.java.JavaPlugin; |
| 8 | +import org.bukkit.scheduler.BukkitRunnable; |
| 9 | +import org.bukkit.scheduler.BukkitTask; |
8 | 10 | import org.jetbrains.annotations.NotNull; |
9 | 11 | import org.jetbrains.annotations.Nullable; |
10 | 12 | import pro.cloudnode.smp.cloudnodemsg.command.IgnoreCommand; |
@@ -50,11 +52,14 @@ public void onEnable() { |
50 | 52 |
|
51 | 53 | getServer().getPluginManager().registerEvents(new AsyncChatListener(), this); |
52 | 54 | getServer().getPluginManager().registerEvents(new PlayerJoinListener(), this); |
| 55 | + |
| 56 | + minuteLoop = minuteLoop(); |
53 | 57 | } |
54 | 58 |
|
55 | 59 | @Override |
56 | 60 | public void onDisable() { |
57 | | - dbSource.close(); |
| 61 | + if (dbSource != null) dbSource.close(); |
| 62 | + if (minuteLoop != null) minuteLoop.cancel(); |
58 | 63 | } |
59 | 64 |
|
60 | 65 | public static boolean isVanished(final @NotNull Player player) { |
@@ -124,4 +129,11 @@ public void runDDL() { |
124 | 129 | public static void runAsync(final @NotNull Runnable runnable) { |
125 | 130 | getInstance().getServer().getScheduler().runTaskAsynchronously(getInstance(), runnable); |
126 | 131 | } |
| 132 | + |
| 133 | + private @NotNull BukkitTask minuteLoop() { |
| 134 | + return getServer().getScheduler().runTaskTimerAsynchronously(this, () -> { |
| 135 | + Mail.notifyUnread(); |
| 136 | + }, 0, 20 * 60); |
| 137 | + } |
| 138 | + private @Nullable BukkitTask minuteLoop; |
127 | 139 | } |
0 commit comments