From 0ecb697d75b25206daf921ecec1c910d6ab77491 Mon Sep 17 00:00:00 2001 From: Jakub <53441451+kuba6000@users.noreply.github.com> Date: Mon, 10 Apr 2023 21:02:49 +0200 Subject: Tea Network update: still alpha (#69) * Move to UUID checking and BigInteger tea count * Research category * Start working on tea limit * Maybe * Update en_US.lang * Fix * Save UUID mapping * Mark dirty * Fixes --- .../java/kubatech/savedata/PlayerDataManager.java | 32 +++++++++++++++++----- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'src/main/java/kubatech/savedata/PlayerDataManager.java') diff --git a/src/main/java/kubatech/savedata/PlayerDataManager.java b/src/main/java/kubatech/savedata/PlayerDataManager.java index d14a261542..ba894504e3 100644 --- a/src/main/java/kubatech/savedata/PlayerDataManager.java +++ b/src/main/java/kubatech/savedata/PlayerDataManager.java @@ -12,7 +12,11 @@ package kubatech.savedata; import java.util.HashMap; import java.util.Map; +import java.util.UUID; +import kubatech.api.helpers.UUIDFinder; + +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.WorldSavedData; @@ -24,7 +28,7 @@ public class PlayerDataManager extends WorldSavedData { private static final String playerDataName = "KubaTech_PlayerData"; static PlayerDataManager Instance = null; - private final HashMap players = new HashMap<>(); + private final HashMap players = new HashMap<>(); public static void Initialize(World world) { if (Instance != null) { @@ -53,7 +57,11 @@ public class PlayerDataManager extends WorldSavedData { players.clear(); for (int i = 0, imax = NBTData.getInteger("size"); i < imax; i++) { NBTTagCompound playerNBTData = NBTData.getCompoundTag("Player." + i); - players.put(playerNBTData.getString("username"), new PlayerData(playerNBTData.getCompoundTag("data"))); + if (!playerNBTData.hasKey("uuid")) continue; + UUID uuid = UUID.fromString(playerNBTData.getString("uuid")); + PlayerData pData = new PlayerData(playerNBTData.getCompoundTag("data")); + players.put(uuid, pData); + if (!pData.username.isEmpty()) UUIDFinder.updateMapping(pData.username, uuid); } } @@ -61,17 +69,27 @@ public class PlayerDataManager extends WorldSavedData { public void writeToNBT(NBTTagCompound NBTData) { NBTData.setInteger("size", players.size()); int i = 0; - for (Map.Entry playerDataEntry : players.entrySet()) { + for (Map.Entry playerDataEntry : players.entrySet()) { NBTTagCompound playerNBTData = new NBTTagCompound(); - playerNBTData.setString("username", playerDataEntry.getKey()); + playerNBTData.setString("uuid", playerDataEntry.getKey().toString()); playerNBTData.setTag("data", playerDataEntry.getValue().toNBTData()); NBTData.setTag("Player." + (i++), playerNBTData); } } - public static PlayerData getPlayer(String username) { - if (Instance == null) return null; - return Instance.players.computeIfAbsent(username, s -> new PlayerData()); + public static PlayerData getPlayer(UUID player) { + if (Instance == null) return null; // probably client side + return Instance.players.computeIfAbsent(player, s -> new PlayerData()); + } + + public static void initializePlayer(EntityPlayerMP player) { + if (Instance == null) return; + if (!Instance.players.containsKey(player.getPersistentID())) { + PlayerData pData = new PlayerData(); + pData.username = player.getCommandSenderName(); + Instance.players.put(player.getPersistentID(), pData); + Instance.markDirty(); + } } @SuppressWarnings("unused") -- cgit