Async data serialization and add synchronization_timeout_retry_delay config option

feat/data-edit-commands
William 3 years ago
parent 2d8f139940
commit ae439595ea

@ -27,6 +27,7 @@ public class ConfigLoader {
Settings.syncFlight = config.getBoolean("synchronisation_settings.flight", false);
Settings.useNativeImplementation = config.getBoolean("native_advancement_synchronization", false);
Settings.synchronizationTimeoutRetryDelay = config.getLong("synchronization_timeout_retry_delay", 15L);
}
}

@ -1,6 +1,7 @@
package me.william278.husksync.bukkit.listener;
import me.william278.husksync.HuskSyncBukkit;
import me.william278.husksync.Settings;
import me.william278.husksync.bukkit.data.DataViewer;
import me.william278.husksync.bukkit.util.PlayerSetter;
import org.bukkit.Bukkit;
@ -37,7 +38,7 @@ public class BukkitEventListener implements Listener {
return; // If the plugin has not been initialized correctly
// Update the player's data
PlayerSetter.updatePlayerData(player);
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> PlayerSetter.updatePlayerData(player));
}
@EventHandler(priority = EventPriority.LOWEST)
@ -55,14 +56,16 @@ public class BukkitEventListener implements Listener {
// Send a redis message requesting the player data (if they need to)
if (HuskSyncBukkit.bukkitCache.isPlayerRequestingOnJoin(player.getUniqueId())) {
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
try {
PlayerSetter.requestPlayerData(player.getUniqueId());
} catch (IOException e) {
plugin.getLogger().log(Level.SEVERE, "Failed to send a PlayerData fetch request", e);
}
});
} else {
// If the player's data wasn't set after 10 ticks, ensure it will be
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
// If the player's data wasn't set after 20 ticks, ensure it will be
Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, () -> {
if (player.isOnline()) {
try {
if (HuskSyncBukkit.bukkitCache.isAwaitingDataFetch(player.getUniqueId())) {
@ -72,7 +75,7 @@ public class BukkitEventListener implements Listener {
plugin.getLogger().log(Level.SEVERE, "Failed to send a PlayerData fetch request", e);
}
}
}, 5);
}, Settings.synchronizationTimeoutRetryDelay);
}
}

@ -17,4 +17,5 @@ synchronisation_settings:
flight: false
cluster_id: 'main'
check_for_updates: true
synchronization_timeout_retry_delay: 15
native_advancement_synchronization: true

@ -68,7 +68,7 @@ public class Settings {
public static boolean syncLocation;
public static boolean syncFlight;
// Future
public static long synchronizationTimeoutRetryDelay;
public static boolean useNativeImplementation;
// This Cluster ID

@ -1,5 +1,5 @@
org.gradle.parallel=true
javaVersion=16
plugin_version=1.3.2
plugin_version=1.3.3
plugin_archive=husksync
Loading…
Cancel
Save