mirror of
https://github.com/WiIIiam278/HuskSync.git
synced 2025-12-22 16:19:20 +00:00
Additional exception handling to player quit event, stop edge-case asynchronous execution
This commit is contained in:
@@ -145,11 +145,18 @@ public abstract class EventListener {
|
|||||||
if (usersAwaitingSync.contains(user.uuid)) {
|
if (usersAwaitingSync.contains(user.uuid)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
plugin.getRedisManager().setUserServerSwitch(user).thenRun(() -> user.getUserData(plugin.getLoggingAdapter()).thenAccept(
|
|
||||||
optionalUserData -> optionalUserData.ifPresent(
|
// Handle asynchronous disconnection
|
||||||
userData -> plugin.getRedisManager().setUserData(user, userData).thenRun(
|
CompletableFuture.runAsync(() -> plugin.getRedisManager().setUserServerSwitch(user)
|
||||||
() -> plugin.getDatabase().setUserData(user, userData, DataSaveCause.DISCONNECT).join()))));
|
.thenRun(() -> user.getUserData(plugin.getLoggingAdapter()).thenAccept(optionalUserData ->
|
||||||
usersAwaitingSync.remove(user.uuid);
|
optionalUserData.ifPresent(userData -> plugin.getRedisManager().setUserData(user, userData)
|
||||||
|
.thenRun(() -> plugin.getDatabase().setUserData(user, userData, DataSaveCause.DISCONNECT)))))
|
||||||
|
.thenRun(() -> usersAwaitingSync.remove(user.uuid)).exceptionally(throwable -> {
|
||||||
|
plugin.getLoggingAdapter().log(Level.SEVERE,
|
||||||
|
"An exception occurred handling a player disconnection");
|
||||||
|
throwable.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}).join());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user