diff options
| author | Jakub <53441451+kuba6000@users.noreply.github.com> | 2022-12-15 16:53:12 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-15 16:53:12 +0100 |
| commit | 8a581938862a4d612f510a8afed88727a34c3916 (patch) | |
| tree | 0307ca87f3c06bbeda6d699aabbc2247b6f38efb /src/main/java/kubatech/savedata | |
| parent | 24a9953b153529191c855af0ae2d10f35844095f (diff) | |
| download | GT5-Unofficial-8a581938862a4d612f510a8afed88727a34c3916.tar.gz GT5-Unofficial-8a581938862a4d612f510a8afed88727a34c3916.tar.bz2 GT5-Unofficial-8a581938862a4d612f510a8afed88727a34c3916.zip | |
MODULAR UI (#34)
* MODULAR UUUUUUUUIIIIIIIIIII
* Tea
* Add recipe to ULTIMATE TEA
* Stupid MT Scripts. I hate it
* Yeet
* More TEA
* Add blocks
* More Modular UIs
* Textures
* Fix custom UI containers
* Texture, tooltip
* UI with tabs
* ButtonWidget
* fix
* Fix
* Texture
* Color is fixed
* More UI work
* Modular UI is hard dependency now
* Spotless
* Simplify
* Format numbers
* A
* Update TeaAcceptorTile.java
* Shadow is fixed, lets gooooo
* hardness
* Mixins mixins mixins
* Tab icons
* Fix crash
* Shop concept
* Bump ModularUI
* Bump Modular UI
* Nooooooooooo
* GREY -> GRAY
* Bump ModularUI
* Bump GT5
* EEC with MUI test
* Include incomplete structure
* REFLECTIONS !!
* Just use slot filter
* Update pos when needed
* Update GT_MetaTileEntity_ExtremeExterminationChamber.java
* Spawner status
* Nice toggle button
* Send messages
* Next toggle button
* Start work on IAADDS
* Scrollable inventory test
* Draw queen slots
* Fix
* Update dependencies.gradle
* Use sync widget
* Add button to enable/disable working
* Configuration in Mega Apiary
* Refactor a bit
* Update ModularUI
* Bump ModularUI
* Bump GT5
* Fix build
* Update dependencies.gradle
* Update build.gradle
* Update dependencies.gradle
* spotless
* Begin working on configuration window
* Update dependencies.gradle
* Deprecated
* Update dependencies.gradle
* Optimize bee storage rendering (2 fps -> 100 fps)
* Make Mega Apiary storage GUI usable
* Configuration window looks ok
* Color is fixed
* TC research
* Disable for now
* Finish tea command
* ok
* Fix
* Update en_US.lang
* ZzZ
* Stuff changed
Diffstat (limited to 'src/main/java/kubatech/savedata')
| -rw-r--r-- | src/main/java/kubatech/savedata/PlayerData.java | 26 | ||||
| -rw-r--r-- | src/main/java/kubatech/savedata/PlayerDataManager.java | 71 |
2 files changed, 97 insertions, 0 deletions
diff --git a/src/main/java/kubatech/savedata/PlayerData.java b/src/main/java/kubatech/savedata/PlayerData.java new file mode 100644 index 0000000000..1a2866f7ea --- /dev/null +++ b/src/main/java/kubatech/savedata/PlayerData.java @@ -0,0 +1,26 @@ +package kubatech.savedata; + +import net.minecraft.nbt.NBTTagCompound; + +public class PlayerData { + public long teaAmount = 0L; + public boolean autoRegen = false; + + PlayerData(NBTTagCompound NBTData) { + teaAmount = NBTData.getLong("teaAmount"); + autoRegen = NBTData.getBoolean("autoRegen"); + } + + PlayerData() {} + + public NBTTagCompound toNBTData() { + NBTTagCompound NBTData = new NBTTagCompound(); + NBTData.setLong("teaAmount", teaAmount); + NBTData.setBoolean("autoRegen", autoRegen); + return NBTData; + } + + public void markDirty() { + PlayerDataManager.Instance.markDirty(); + } +} diff --git a/src/main/java/kubatech/savedata/PlayerDataManager.java b/src/main/java/kubatech/savedata/PlayerDataManager.java new file mode 100644 index 0000000000..3fcaf1ba25 --- /dev/null +++ b/src/main/java/kubatech/savedata/PlayerDataManager.java @@ -0,0 +1,71 @@ +package kubatech.savedata; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import java.util.HashMap; +import java.util.Map; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.WorldSavedData; +import net.minecraftforge.event.world.WorldEvent; + +public class PlayerDataManager extends WorldSavedData { + + private static final String playerDataName = "KubaTech_PlayerData"; + static PlayerDataManager Instance = null; + private final HashMap<String, PlayerData> players = new HashMap<>(); + + public static void Initialize(World world) { + if (Instance != null) { + Instance.players.clear(); + } + Instance = (PlayerDataManager) world.mapStorage.loadData(PlayerDataManager.class, playerDataName); + if (Instance == null) { + Instance = new PlayerDataManager(); + world.mapStorage.setData(playerDataName, Instance); + } + Instance.markDirty(); + } + + @SuppressWarnings("unused") + public PlayerDataManager(String p_i2141_1_) { + super(p_i2141_1_); + } + + public PlayerDataManager() { + super(playerDataName); + } + + @Override + public void readFromNBT(NBTTagCompound NBTData) { + if (!NBTData.hasKey("size")) return; + 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"))); + } + } + + @Override + public void writeToNBT(NBTTagCompound NBTData) { + NBTData.setInteger("size", players.size()); + int i = 0; + for (Map.Entry<String, PlayerData> playerDataEntry : players.entrySet()) { + NBTTagCompound playerNBTData = new NBTTagCompound(); + playerNBTData.setString("username", playerDataEntry.getKey()); + 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()); + } + + @SuppressWarnings("unused") + @SubscribeEvent + public void onWorldLoad(WorldEvent.Load event) { + if (event.world.isRemote || event.world.provider.dimensionId != 0) return; + Initialize(event.world); + } +} |
