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;
|
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.krakatoa.proxy.ProxySystem;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
import net.md_5.bungee.api.event.PlayerDisconnectEvent;
|
import net.md_5.bungee.api.event.PlayerDisconnectEvent;
|
||||||
import net.md_5.bungee.api.plugin.Listener;
|
import net.md_5.bungee.api.plugin.Listener;
|
||||||
import net.md_5.bungee.event.EventHandler;
|
import net.md_5.bungee.event.EventHandler;
|
||||||
|
import org.bson.conversions.Bson;
|
||||||
import org.redisson.api.RMap;
|
import org.redisson.api.RMap;
|
||||||
|
|
||||||
public class PlayerDisconnectListener implements Listener {
|
public class PlayerDisconnectListener implements Listener {
|
||||||
|
@ -27,6 +34,35 @@ public class PlayerDisconnectListener implements Listener {
|
||||||
|
|
||||||
// TODO: save redis player to mongodb
|
// 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()
|
/*Long res = ProxySystem.getInstance().getRedisManager().getRedisKeyCommands()
|
||||||
.del("player:" + proxiedPlayer.getUniqueId().toString());
|
.del("player:" + proxiedPlayer.getUniqueId().toString());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue