diff options
| author | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-06-21 11:14:06 +0100 |
|---|---|---|
| committer | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-06-21 11:14:06 +0100 |
| commit | 962b7023531a552a3114602f831ad38df2d6161c (patch) | |
| tree | bf54f6eab566f87c2526761e796b4dee70377bab | |
| parent | d23e78db7f45cf9002b4deb6f038875a8832cee3 (diff) | |
Add delay loading option
| -rw-r--r-- | bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java | 24 | ||||
| -rw-r--r-- | bukkit/src/main/resources/resources/bukkit/config.yml | 4 |
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: |
