diff --git a/Plan/bukkit/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java b/Plan/bukkit/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java
index 40b92c79b..364c53215 100644
--- a/Plan/bukkit/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java
+++ b/Plan/bukkit/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java
@@ -19,6 +19,7 @@ package com.djrapitops.plan.system.tasks;
import com.djrapitops.plan.Plan;
import com.djrapitops.plan.ShutdownHook;
import com.djrapitops.plan.db.tasks.DBCleanTask;
+import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import com.djrapitops.plan.system.settings.paths.TimeSettings;
import com.djrapitops.plan.system.tasks.bukkit.BukkitTPSCountTimer;
@@ -50,6 +51,7 @@ public class BukkitTaskSystem extends ServerTaskSystem {
private final PingCountTimerBukkit pingCountTimer;
private final ConfigStoreTask configStoreTask;
private final DBCleanTask dbCleanTask;
+ private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask;
@Inject
public BukkitTaskSystem(
@@ -65,7 +67,8 @@ public class BukkitTaskSystem extends ServerTaskSystem {
LogsFolderCleanTask logsFolderCleanTask,
PlayersPageRefreshTask playersPageRefreshTask,
ConfigStoreTask configStoreTask,
- DBCleanTask dbCleanTask
+ DBCleanTask dbCleanTask,
+ ExtensionServerMethodCallerTask extensionServerMethodCallerTask
) {
super(
runnableFactory,
@@ -80,6 +83,7 @@ public class BukkitTaskSystem extends ServerTaskSystem {
this.pingCountTimer = pingCountTimer;
this.configStoreTask = configStoreTask;
this.dbCleanTask = dbCleanTask;
+ this.extensionServerMethodCallerTask = extensionServerMethodCallerTask;
}
@Override
@@ -88,20 +92,24 @@ public class BukkitTaskSystem extends ServerTaskSystem {
try {
plugin.registerListener(pingCountTimer);
long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS);
- registerTask("PingCountTimer", pingCountTimer)
- .runTaskTimer(startDelay, 40L);
-
- // +40 ticks / 2 seconds so that update check task runs first.
- long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
- registerTask("Config Store Task", configStoreTask).runTaskLaterAsynchronously(storeDelay);
-
- registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously(
- TimeAmount.toTicks(20, TimeUnit.SECONDS),
- TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
- );
+ registerTask(pingCountTimer).runTaskTimer(startDelay, 40L);
} catch (ExceptionInInitializerError | NoClassDefFoundError ignore) {
// Running CraftBukkit
}
+
+ // +40 ticks / 2 seconds so that update check task runs first.
+ long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
+ registerTask(configStoreTask).runTaskLaterAsynchronously(storeDelay);
+
+ registerTask(dbCleanTask).runTaskTimerAsynchronously(
+ TimeAmount.toTicks(20, TimeUnit.SECONDS),
+ TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
+ );
+
+ long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS);
+ registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously(
+ TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod
+ );
shutdownHook.register();
}
diff --git a/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java b/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java
index 84542e410..b34ead8a6 100644
--- a/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java
+++ b/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java
@@ -18,6 +18,7 @@ package com.djrapitops.plan.system.tasks;
import com.djrapitops.plan.PlanBungee;
import com.djrapitops.plan.db.tasks.DBCleanTask;
+import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import com.djrapitops.plan.system.settings.paths.TimeSettings;
import com.djrapitops.plan.system.tasks.bungee.BungeeTPSCountTimer;
@@ -47,6 +48,7 @@ public class BungeeTaskSystem extends TaskSystem {
private final PlayersPageRefreshTask playersPageRefreshTask;
private final NetworkConfigStoreTask networkConfigStoreTask;
private final DBCleanTask dbCleanTask;
+ private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask;
@Inject
public BungeeTaskSystem(
@@ -59,7 +61,8 @@ public class BungeeTaskSystem extends TaskSystem {
LogsFolderCleanTask logsFolderCleanTask,
PlayersPageRefreshTask playersPageRefreshTask,
NetworkConfigStoreTask networkConfigStoreTask,
- DBCleanTask dbCleanTask
+ DBCleanTask dbCleanTask,
+ ExtensionServerMethodCallerTask extensionServerMethodCallerTask
) {
super(runnableFactory, bungeeTPSCountTimer);
this.plugin = plugin;
@@ -71,6 +74,7 @@ public class BungeeTaskSystem extends TaskSystem {
this.playersPageRefreshTask = playersPageRefreshTask;
this.networkConfigStoreTask = networkConfigStoreTask;
this.dbCleanTask = dbCleanTask;
+ this.extensionServerMethodCallerTask = extensionServerMethodCallerTask;
}
@Override
@@ -85,18 +89,23 @@ public class BungeeTaskSystem extends TaskSystem {
plugin.registerListener(pingCountTimer);
long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS);
- runnableFactory.create("PingCountTimer", pingCountTimer).runTaskTimer(startDelay, PingCountTimerBungee.PING_INTERVAL);
+ registerTask(pingCountTimer).runTaskTimer(startDelay, PingCountTimerBungee.PING_INTERVAL);
registerTask(playersPageRefreshTask)
.runTaskTimerAsynchronously(TimeAmount.toTicks(5L, TimeUnit.MINUTES), TimeAmount.toTicks(5L, TimeUnit.MINUTES));
// +40 ticks / 2 seconds so that update check task runs first.
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
- registerTask("Config Store Task", networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay);
+ registerTask(networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay);
- registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously(
+ registerTask(dbCleanTask).runTaskTimerAsynchronously(
TimeAmount.toTicks(20, TimeUnit.SECONDS),
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
);
+
+ long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS);
+ registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously(
+ TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod
+ );
}
}
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/ExtensionServerMethodCallerTask.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/ExtensionServerMethodCallerTask.java
new file mode 100644
index 000000000..3c48094cb
--- /dev/null
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/ExtensionServerMethodCallerTask.java
@@ -0,0 +1,43 @@
+/*
+ * This file is part of Player Analytics (Plan).
+ *
+ * Plan is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License v3 as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Plan is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Plan. If not, see .
+ */
+package com.djrapitops.plan.extension;
+
+import com.djrapitops.plugin.task.AbsRunnable;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ * Task for updating {@link DataExtension} server values periodically.
+ *
+ * @author Rsl1122
+ */
+@Singleton
+public class ExtensionServerMethodCallerTask extends AbsRunnable {
+
+ private final ExtensionServiceImplementation extensionServiceImplementation;
+
+ @Inject
+ public ExtensionServerMethodCallerTask(ExtensionServiceImplementation extensionServiceImplementation) {
+ this.extensionServiceImplementation = extensionServiceImplementation;
+ }
+
+ @Override
+ public void run() {
+ extensionServiceImplementation.updateServerValues(CallEvents.SERVER_PERIODICAL);
+ }
+}
\ No newline at end of file
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/TimeSettings.java b/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/TimeSettings.java
index 90c46a49d..316600799 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/TimeSettings.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/TimeSettings.java
@@ -37,6 +37,7 @@ public class TimeSettings {
public static final Setting ACTIVE_PLAY_THRESHOLD = new TimeSetting("Time.Thresholds.Activity_index.Playtime_threshold");
public static final Setting KEEP_INACTIVE_PLAYERS = new TimeSetting("Time.Thresholds.Remove_inactive_player_data_after");
public static final Setting ANALYSIS_REFRESH_PERIOD = new TimeSetting("Time.Periodic_tasks.Analysis_refresh_every");
+ public static final Setting EXTENSION_DATA_REFRESH_PERIOD = new TimeSetting("Time.Periodic_tasks.Extension_data_refresh_every");
public static final Setting CLEAN_CACHE_PERIOD = new TimeSetting("Time.Periodic_tasks.Clean_caches_every");
public static final Setting CLEAN_DATABASE_PERIOD = new TimeSetting("Time.Periodic_tasks.Clean_Database_every");
public static final Setting CONFIG_UPDATE_INTERVAL = new TimeSetting("Time.Periodic_tasks.Check_DB_for_server_config_files_every");
diff --git a/Plan/common/src/main/resources/bungeeconfig.yml b/Plan/common/src/main/resources/bungeeconfig.yml
index 6315ca6ea..7a1620e03 100644
--- a/Plan/common/src/main/resources/bungeeconfig.yml
+++ b/Plan/common/src/main/resources/bungeeconfig.yml
@@ -86,6 +86,8 @@ Time:
Remove_inactive_player_data_after: 180
Unit: DAYS
Periodic_tasks:
+ Extension_data_refresh_every: 1
+ Unit: HOURS
Check_DB_for_server_config_files_every: 1
Unit: MINUTES
Clean_caches_every: 10
diff --git a/Plan/common/src/main/resources/config.yml b/Plan/common/src/main/resources/config.yml
index 90d23af6b..09d96755a 100644
--- a/Plan/common/src/main/resources/config.yml
+++ b/Plan/common/src/main/resources/config.yml
@@ -93,6 +93,8 @@ Time:
Periodic_tasks:
Analysis_refresh_every: 60
Unit: MINUTES
+ Extension_data_refresh_every: 1
+ Unit: HOURS
Check_DB_for_server_config_files_every: 1
Unit: MINUTES
Clean_caches_every: 10
diff --git a/Plan/sponge/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java b/Plan/sponge/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java
index 517b8ec35..57acc4e88 100644
--- a/Plan/sponge/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java
+++ b/Plan/sponge/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java
@@ -19,6 +19,7 @@ package com.djrapitops.plan.system.tasks;
import com.djrapitops.plan.PlanSponge;
import com.djrapitops.plan.ShutdownHook;
import com.djrapitops.plan.db.tasks.DBCleanTask;
+import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import com.djrapitops.plan.system.settings.paths.TimeSettings;
import com.djrapitops.plan.system.tasks.server.BootAnalysisTask;
@@ -43,6 +44,7 @@ public class SpongeTaskSystem extends ServerTaskSystem {
private final PingCountTimerSponge pingCountTimer;
private final ConfigStoreTask configStoreTask;
private final DBCleanTask dbCleanTask;
+ private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask;
@Inject
public SpongeTaskSystem(
@@ -57,7 +59,8 @@ public class SpongeTaskSystem extends ServerTaskSystem {
LogsFolderCleanTask logsFolderCleanTask,
PlayersPageRefreshTask playersPageRefreshTask,
ConfigStoreTask configStoreTask,
- DBCleanTask dbCleanTask
+ DBCleanTask dbCleanTask,
+ ExtensionServerMethodCallerTask extensionServerMethodCallerTask
) {
super(
runnableFactory,
@@ -72,6 +75,7 @@ public class SpongeTaskSystem extends ServerTaskSystem {
this.pingCountTimer = pingCountTimer;
this.configStoreTask = configStoreTask;
this.dbCleanTask = dbCleanTask;
+ this.extensionServerMethodCallerTask = extensionServerMethodCallerTask;
}
@Override
@@ -80,18 +84,22 @@ public class SpongeTaskSystem extends ServerTaskSystem {
plugin.registerListener(pingCountTimer);
long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS);
- runnableFactory.create("PingCountTimer", pingCountTimer)
- .runTaskTimer(startDelay, PingCountTimerSponge.PING_INTERVAL);
+ registerTask(pingCountTimer).runTaskTimer(startDelay, PingCountTimerSponge.PING_INTERVAL);
// +40 ticks / 2 seconds so that update check task runs first.
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
- registerTask("Config Store Task", configStoreTask).runTaskLaterAsynchronously(storeDelay);
+ registerTask(configStoreTask).runTaskLaterAsynchronously(storeDelay);
- registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously(
+ registerTask(dbCleanTask).runTaskTimerAsynchronously(
TimeAmount.toTicks(20, TimeUnit.SECONDS),
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
);
+ long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS);
+ registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously(
+ TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod
+ );
+
shutdownHook.register();
}
diff --git a/Plan/velocity/src/main/java/com/djrapitops/plan/system/tasks/VelocityTaskSystem.java b/Plan/velocity/src/main/java/com/djrapitops/plan/system/tasks/VelocityTaskSystem.java
index bd09a6b07..276e47d4b 100644
--- a/Plan/velocity/src/main/java/com/djrapitops/plan/system/tasks/VelocityTaskSystem.java
+++ b/Plan/velocity/src/main/java/com/djrapitops/plan/system/tasks/VelocityTaskSystem.java
@@ -18,6 +18,7 @@ package com.djrapitops.plan.system.tasks;
import com.djrapitops.plan.PlanVelocity;
import com.djrapitops.plan.db.tasks.DBCleanTask;
+import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import com.djrapitops.plan.system.settings.paths.TimeSettings;
import com.djrapitops.plan.system.tasks.proxy.NetworkConfigStoreTask;
@@ -47,6 +48,7 @@ public class VelocityTaskSystem extends TaskSystem {
private final PlayersPageRefreshTask playersPageRefreshTask;
private final NetworkConfigStoreTask networkConfigStoreTask;
private final DBCleanTask dbCleanTask;
+ private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask;
@Inject
public VelocityTaskSystem(
@@ -59,7 +61,8 @@ public class VelocityTaskSystem extends TaskSystem {
LogsFolderCleanTask logsFolderCleanTask,
PlayersPageRefreshTask playersPageRefreshTask,
NetworkConfigStoreTask networkConfigStoreTask,
- DBCleanTask dbCleanTask
+ DBCleanTask dbCleanTask,
+ ExtensionServerMethodCallerTask extensionServerMethodCallerTask
) {
super(runnableFactory, velocityTPSCountTimer);
this.plugin = plugin;
@@ -71,6 +74,7 @@ public class VelocityTaskSystem extends TaskSystem {
this.playersPageRefreshTask = playersPageRefreshTask;
this.networkConfigStoreTask = networkConfigStoreTask;
this.dbCleanTask = dbCleanTask;
+ this.extensionServerMethodCallerTask = extensionServerMethodCallerTask;
}
@Override
@@ -85,18 +89,22 @@ public class VelocityTaskSystem extends TaskSystem {
plugin.registerListener(pingCountTimer);
long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS);
- runnableFactory.create("PingCountTimer", pingCountTimer).runTaskTimer(startDelay, PingCountTimerVelocity.PING_INTERVAL);
+ registerTask(pingCountTimer).runTaskTimer(startDelay, PingCountTimerVelocity.PING_INTERVAL);
- registerTask(playersPageRefreshTask)
- .runTaskTimerAsynchronously(TimeAmount.toTicks(5L, TimeUnit.MINUTES), TimeAmount.toTicks(5L, TimeUnit.MINUTES));
+ registerTask(playersPageRefreshTask).runTaskTimerAsynchronously(TimeAmount.toTicks(5L, TimeUnit.MINUTES), TimeAmount.toTicks(5L, TimeUnit.MINUTES));
// +40 ticks / 2 seconds so that update check task runs first.
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
- registerTask("Config Store Task", networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay);
+ registerTask(networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay);
- registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously(
+ registerTask(dbCleanTask).runTaskTimerAsynchronously(
TimeAmount.toTicks(20, TimeUnit.SECONDS),
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
);
+
+ long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS);
+ registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously(
+ TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod
+ );
}
}