mirror of
https://github.com/WiIIiam278/HuskSync.git
synced 2025-12-26 10:09:10 +00:00
Ensure players remain locked on disconnect and shutdown, close #67
This commit is contained in:
@@ -154,7 +154,6 @@ public abstract class EventListener {
|
||||
optionalUserData -> optionalUserData.ifPresent(userData -> plugin.getRedisManager()
|
||||
.setUserData(user, userData).thenRun(() -> plugin.getDatabase()
|
||||
.setUserData(user, userData, DataSaveCause.DISCONNECT)))))
|
||||
.thenRun(() -> lockedPlayers.remove(user.uuid))
|
||||
.exceptionally(throwable -> {
|
||||
plugin.getLoggingAdapter().log(Level.SEVERE,
|
||||
"An exception occurred handling a player disconnection");
|
||||
@@ -210,10 +209,17 @@ public abstract class EventListener {
|
||||
public final void handlePluginDisable() {
|
||||
disabling = true;
|
||||
|
||||
plugin.getOnlineUsers().stream().filter(user -> !lockedPlayers.contains(user.uuid)).forEach(
|
||||
user -> user.getUserData(plugin.getLoggingAdapter(), plugin.getSettings()).join().ifPresent(
|
||||
userData -> plugin.getDatabase().setUserData(user, userData, DataSaveCause.SERVER_SHUTDOWN).join()));
|
||||
// Save data for all online users
|
||||
plugin.getOnlineUsers().stream()
|
||||
.filter(user -> !lockedPlayers.contains(user.uuid))
|
||||
.forEach(user -> {
|
||||
lockedPlayers.add(user.uuid);
|
||||
user.getUserData(plugin.getLoggingAdapter(), plugin.getSettings()).join()
|
||||
.ifPresent(userData -> plugin.getDatabase()
|
||||
.setUserData(user, userData, DataSaveCause.SERVER_SHUTDOWN).join());
|
||||
});
|
||||
|
||||
// Close outstanding connections
|
||||
plugin.getDatabase().close();
|
||||
plugin.getRedisManager().close();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user