aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/savedata
diff options
context:
space:
mode:
authorJakub <53441451+kuba6000@users.noreply.github.com>2023-04-10 21:02:49 +0200
committerGitHub <noreply@github.com>2023-04-10 21:02:49 +0200
commit0ecb697d75b25206daf921ecec1c910d6ab77491 (patch)
tree1200eb0151e16c9b21187a0f764dced1d9fd9e91 /src/main/java/kubatech/savedata
parente0c9332c12847e4705ea29aa0ed15dcb3806dca4 (diff)
downloadGT5-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.java14
-rw-r--r--src/main/java/kubatech/savedata/PlayerDataManager.java32
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")