save player informations
This commit is contained in:
parent
31ba32933e
commit
5e34588e3b
6 changed files with 190 additions and 11 deletions
|
@ -3,14 +3,21 @@ package me.unurled.sacredrealms.sr.components.player;
|
|||
import static me.unurled.sacredrealms.sr.utils.Logger.error;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
import me.unurled.sacredrealms.sr.data.DataHandler;
|
||||
import me.unurled.sacredrealms.sr.data.DataManager;
|
||||
import me.unurled.sacredrealms.sr.data.gson.InventoryDeserializer;
|
||||
import me.unurled.sacredrealms.sr.data.gson.InventorySerializer;
|
||||
import me.unurled.sacredrealms.sr.data.gson.PotionEffectDeserializer;
|
||||
import me.unurled.sacredrealms.sr.data.gson.PotionEffectSerializer;
|
||||
import me.unurled.sacredrealms.sr.managers.Manager;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
@ -32,13 +39,11 @@ public class PlayerManager extends Manager {
|
|||
return;
|
||||
}
|
||||
DataHandler dh = dm.getDataHandler();
|
||||
Gson gson = new Gson();
|
||||
dh.set("sr.players", gson.toJson(players));
|
||||
}
|
||||
|
||||
/** Load the data */
|
||||
@Override
|
||||
public void loadData() {}
|
||||
/*@Override
|
||||
public void loadData() {}*/
|
||||
|
||||
@Nullable
|
||||
public SRPlayer getPlayer(UUID uuid) {
|
||||
|
@ -59,20 +64,30 @@ public class PlayerManager extends Manager {
|
|||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent e) {
|
||||
SRPlayer player = new SRPlayer(e.getPlayer());
|
||||
// load data from db // TODO: test this after redis cache
|
||||
/*DataManager dm = (DataManager) DataManager.getInstance(DataManager.class);
|
||||
DataManager dm = (DataManager) DataManager.getInstance(DataManager.class);
|
||||
if (dm == null) {
|
||||
error("DataManager is null, Can't load player " + e.getPlayer().getName() + "'s data" + ".");
|
||||
return;
|
||||
}
|
||||
DataHandler dh = dm.getDataHandler();
|
||||
Gson gson = new Gson();
|
||||
Object json = dh.getGson("sr.players." + e.getPlayer().getUniqueId());*/
|
||||
addPlayer(player);
|
||||
Gson gson =
|
||||
new GsonBuilder()
|
||||
.registerTypeAdapter(Inventory.class, new InventoryDeserializer())
|
||||
.registerTypeAdapter(PotionEffect.class, new PotionEffectDeserializer())
|
||||
.excludeFieldsWithoutExposeAnnotation()
|
||||
.create();
|
||||
String json = dh.get("sr.players." + e.getPlayer().getUniqueId());
|
||||
SRPlayer srPlayer = gson.fromJson(json, SRPlayer.class);
|
||||
|
||||
addPlayer(srPlayer);
|
||||
|
||||
e.getPlayer().getInventory().clear();
|
||||
e.getPlayer().getInventory().setContents(srPlayer.getInventory().getContents());
|
||||
|
||||
e.getPlayer().updateInventory();
|
||||
}
|
||||
|
||||
// TODO: test if it works, i have a doubt about the jsonAppend (key + path seems weird)
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent e) {
|
||||
SRPlayer player = getPlayer(e.getPlayer().getUniqueId());
|
||||
|
@ -86,7 +101,12 @@ public class PlayerManager extends Manager {
|
|||
return;
|
||||
}
|
||||
DataHandler dh = dm.getDataHandler();
|
||||
Gson gson = new Gson();
|
||||
Gson gson =
|
||||
new GsonBuilder()
|
||||
.excludeFieldsWithoutExposeAnnotation()
|
||||
.registerTypeAdapter(Inventory.class, new InventorySerializer())
|
||||
.registerTypeAdapter(PotionEffect.class, new PotionEffectSerializer())
|
||||
.create();
|
||||
dh.set("sr.players." + e.getPlayer().getUniqueId(), gson.toJson(player));
|
||||
|
||||
removePlayer(e.getPlayer().getUniqueId());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue