save the player in the database again when the player leaves the server

master
Alex 2022-04-05 20:00:37 +02:00
parent 6cef1f2916
commit 43995d580f
1 changed files with 36 additions and 0 deletions

View File

@ -1,10 +1,17 @@
package net.krakatoa.proxy.listener;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.model.Updates;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import net.krakatoa.proxy.ProxySystem;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.event.PlayerDisconnectEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
import org.bson.conversions.Bson;
import org.redisson.api.RMap;
public class PlayerDisconnectListener implements Listener {
@ -27,6 +34,35 @@ public class PlayerDisconnectListener implements Listener {
// TODO: save redis player to mongodb
ProxySystem.getInstance().getMongoManager().getPlayers()
.find(Filters.eq("uuid", uuid))
.first((document, throwable) -> {
if (document != null) {
List<Bson> updatesList = new ArrayList<>();
map.forEach((key, value) -> {
if (!Objects.equals(key, "_id") && !Objects.equals(key, "uuid")) {
updatesList.add(Updates.set(key, value));
}
});
Bson updates = Updates.combine(updatesList);
UpdateOptions options = new UpdateOptions().upsert(true);
ProxySystem.getInstance().getMongoManager().getPlayers()
.updateOne(document, updates, options, (result, t) -> {
System.out.println("Modified document count: " + result.getModifiedCount());
System.out.println("Upserted id: " + result.getUpsertedId());
});
} else {
System.out.println("Mongo player is null on disconnect");
}
});
/*Long res = ProxySystem.getInstance().getRedisManager().getRedisKeyCommands()
.del("player:" + proxiedPlayer.getUniqueId().toString());