diff options
author | Jakub <53441451+kuba6000@users.noreply.github.com> | 2023-04-10 21:02:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-10 21:02:49 +0200 |
commit | 0ecb697d75b25206daf921ecec1c910d6ab77491 (patch) | |
tree | 1200eb0151e16c9b21187a0f764dced1d9fd9e91 /src/main/java/kubatech/savedata | |
parent | e0c9332c12847e4705ea29aa0ed15dcb3806dca4 (diff) | |
download | GT5-Unofficial-0ecb697d75b25206daf921ecec1c910d6ab77491.tar.gz GT5-Unofficial-0ecb697d75b25206daf921ecec1c910d6ab77491.tar.bz2 GT5-Unofficial-0ecb697d75b25206daf921ecec1c910d6ab77491.zip |
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
Diffstat (limited to 'src/main/java/kubatech/savedata')
-rw-r--r-- | src/main/java/kubatech/savedata/PlayerData.java | 14 | ||||
-rw-r--r-- | src/main/java/kubatech/savedata/PlayerDataManager.java | 32 |
2 files changed, 33 insertions, 13 deletions
diff --git a/src/main/java/kubatech/savedata/PlayerData.java b/src/main/java/kubatech/savedata/PlayerData.java index a00b7fd0fa..3cf33bab2d 100644 --- a/src/main/java/kubatech/savedata/PlayerData.java +++ b/src/main/java/kubatech/savedata/PlayerData.java @@ -10,24 +10,26 @@ package kubatech.savedata; +import kubatech.api.tea.TeaNetwork; + import net.minecraft.nbt.NBTTagCompound; public class PlayerData { - public long teaAmount = 0L; - public boolean autoRegen = false; + public String username = ""; + public TeaNetwork teaNetwork; PlayerData(NBTTagCompound NBTData) { - teaAmount = NBTData.getLong("teaAmount"); - autoRegen = NBTData.getBoolean("autoRegen"); + username = NBTData.getString("username"); + if (NBTData.hasKey("teaNetwork")) teaNetwork = TeaNetwork.fromNBT(NBTData.getCompoundTag("teaNetwork")); } PlayerData() {} public NBTTagCompound toNBTData() { NBTTagCompound NBTData = new NBTTagCompound(); - NBTData.setLong("teaAmount", teaAmount); - NBTData.setBoolean("autoRegen", autoRegen); + NBTData.setString("username", username); + if (teaNetwork != null) NBTData.setTag("teaNetwork", teaNetwork.toNBT()); return NBTData; } 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<String, PlayerData> players = new HashMap<>(); + private final HashMap<UUID, PlayerData> 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<String, PlayerData> playerDataEntry : players.entrySet()) { + for (Map.Entry<UUID, PlayerData> 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") |