diff --git a/src/main/java/net/krakatoa/proxy/listener/PlayerDisconnectListener.java b/src/main/java/net/krakatoa/proxy/listener/PlayerDisconnectListener.java index c40acb7..85b053d 100644 --- a/src/main/java/net/krakatoa/proxy/listener/PlayerDisconnectListener.java +++ b/src/main/java/net/krakatoa/proxy/listener/PlayerDisconnectListener.java @@ -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 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());