save the player in the database again when the player leaves the server
parent
6cef1f2916
commit
43995d580f
|
@ -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());
|
||||
|
||||
|
|
Loading…
Reference in New Issue