aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2021-06-21 11:14:06 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2021-06-21 11:14:06 +0100
commit962b7023531a552a3114602f831ad38df2d6161c (patch)
treebf54f6eab566f87c2526761e796b4dee70377bab /bukkit
parentd23e78db7f45cf9002b4deb6f038875a8832cee3 (diff)
Add delay loading option
Diffstat (limited to 'bukkit')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java24
-rw-r--r--bukkit/src/main/resources/resources/bukkit/config.yml4
2 files changed, 16 insertions, 12 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java
index 2fe15860..60c1c13b 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java
@@ -4,6 +4,7 @@ import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin;
import com.leonardobishop.quests.bukkit.util.Messages;
import com.leonardobishop.quests.common.player.QPlayer;
import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -20,15 +21,8 @@ public class PlayerJoinListener implements Listener {
this.plugin = plugin;
}
- @EventHandler(priority = EventPriority.MONITOR)
- public void onAsyncJoin(AsyncPlayerPreLoginEvent event) {
- plugin.getPlayerManager().loadPlayer(event.getUniqueId());
- }
-
@EventHandler
public void onEvent(PlayerJoinEvent event) {
- UUID playerUuid = event.getPlayer().getUniqueId();
- plugin.getPlayerManager().loadPlayer(playerUuid);
if (plugin.getDescription().getVersion().contains("beta") && event.getPlayer().hasPermission("quests.admin")) {
event.getPlayer().sendMessage(Messages.BETA_REMINDER.getMessage());
}
@@ -41,11 +35,17 @@ public class PlayerJoinListener implements Listener {
Bukkit.getScheduler().runTaskLater(this.plugin, () -> event.getPlayer().sendMessage(updateMessage), 50L);
}
- QPlayer qPlayer = plugin.getPlayerManager().getPlayer(playerUuid);
- if (qPlayer == null) return;
-
- // run a full check to check for any missed quest completions
- plugin.getQuestCompleter().queueFullCheck(qPlayer.getQuestProgressFile());
+ final Player player = event.getPlayer();
+ plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, () -> {
+ if (!player.isOnline()) return;
+ plugin.getPlayerManager().loadPlayer(player.getUniqueId());
+ plugin.getServer().getScheduler().runTask(plugin, () -> {
+ QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
+ if (qPlayer == null) return;
+ // run a full check to check for any missed quest completions
+ plugin.getQuestCompleter().queueFullCheck(qPlayer.getQuestProgressFile());
+ });
+ }, plugin.getQuestsConfig().getInt("options.storage.synchronisation.delay-loading", 0));
}
}
diff --git a/bukkit/src/main/resources/resources/bukkit/config.yml b/bukkit/src/main/resources/resources/bukkit/config.yml
index f7084505..a7c7dd45 100644
--- a/bukkit/src/main/resources/resources/bukkit/config.yml
+++ b/bukkit/src/main/resources/resources/bukkit/config.yml
@@ -239,6 +239,10 @@ options:
# Either 'yaml' (flatfile) or 'mysql' (network)
# Please read the following before using MySQL https://github.com/LMBishop/Quests/wiki/Storage-Providers#network
provider: "yaml"
+ # See: https://github.com/LMBishop/Quests/wiki/Storage-Providers#Data-synchronisiation
+ # https://github.com/LMBishop/Quests/issues/180
+ synchronisation:
+ delay-loading: 0 # (ticks)
# The following is only applicable for database storage providers (e.g. mysql)
database-settings:
network: