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/tileentity | |
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/tileentity')
-rw-r--r-- | src/main/java/kubatech/tileentity/TeaAcceptorTile.java | 67 | ||||
-rw-r--r-- | src/main/java/kubatech/tileentity/TeaStorageTile.java | 63 |
2 files changed, 103 insertions, 27 deletions
diff --git a/src/main/java/kubatech/tileentity/TeaAcceptorTile.java b/src/main/java/kubatech/tileentity/TeaAcceptorTile.java index 20b101e70d..73bfd46d65 100644 --- a/src/main/java/kubatech/tileentity/TeaAcceptorTile.java +++ b/src/main/java/kubatech/tileentity/TeaAcceptorTile.java @@ -10,15 +10,19 @@ package kubatech.tileentity; -import java.text.NumberFormat; +import static kubatech.api.Variables.numberFormat; +import static kubatech.api.Variables.numberFormatScientific; + +import java.math.BigInteger; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.BiFunction; import kubatech.api.enums.ItemList; +import kubatech.api.tea.TeaNetwork; import kubatech.api.utils.StringUtils; import kubatech.loaders.ItemLoader; import kubatech.loaders.block.KubaBlock; -import kubatech.savedata.PlayerData; -import kubatech.savedata.PlayerDataManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; @@ -27,6 +31,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; +import codechicken.nei.NEIClientUtils; + import com.gtnewhorizons.modularui.api.ModularUITextures; import com.gtnewhorizons.modularui.api.drawable.Text; import com.gtnewhorizons.modularui.api.math.Color; @@ -36,6 +42,7 @@ import com.gtnewhorizons.modularui.api.widget.Widget; import com.gtnewhorizons.modularui.common.builder.UIInfo; import com.gtnewhorizons.modularui.common.internal.wrapper.ModularUIContainer; import com.gtnewhorizons.modularui.common.widget.DynamicTextWidget; +import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget; import com.gtnewhorizons.modularui.common.widget.TextWidget; public class TeaAcceptorTile extends TileEntity @@ -45,16 +52,16 @@ public class TeaAcceptorTile extends TileEntity super(); } - private String tileOwner = null; - private PlayerData playerData = null; + private UUID tileOwner = null; + private TeaNetwork teaNetwork = null; private long averageInput = 0L; private long inAmount = 0L; private int ticker = 0; - public void setTeaOwner(String teaOwner) { - if (tileOwner == null || tileOwner.isEmpty()) { + public void setTeaOwner(UUID teaOwner) { + if (tileOwner == null) { tileOwner = teaOwner; - playerData = PlayerDataManager.getPlayer(tileOwner); + teaNetwork = TeaNetwork.getNetwork(tileOwner); markDirty(); } } @@ -62,20 +69,21 @@ public class TeaAcceptorTile extends TileEntity @Override public void readFromNBT(NBTTagCompound NBTData) { super.readFromNBT(NBTData); - tileOwner = NBTData.getString("tileOwner"); - if (!tileOwner.isEmpty()) { - playerData = PlayerDataManager.getPlayer(tileOwner); - } + try { + tileOwner = UUID.fromString(NBTData.getString("tileOwner")); + teaNetwork = TeaNetwork.getNetwork(tileOwner); + } catch (Exception ignored) {} } @Override public void writeToNBT(NBTTagCompound NBTData) { super.writeToNBT(NBTData); - NBTData.setString("tileOwner", tileOwner); + NBTData.setString("tileOwner", tileOwner.toString()); } @Override public void updateEntity() { + if (this.worldObj.isRemote) return; if (++ticker % 100 == 0) { averageInput = inAmount / 100; inAmount = 0; @@ -104,10 +112,9 @@ public class TeaAcceptorTile extends TileEntity @Override public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) { - if (playerData != null) { - playerData.teaAmount += p_70299_2_.stackSize; - playerData.markDirty(); + if (teaNetwork != null) { inAmount += p_70299_2_.stackSize; + teaNetwork.addTea(p_70299_2_.stackSize); } } @@ -128,7 +135,7 @@ public class TeaAcceptorTile extends TileEntity @Override public boolean isUseableByPlayer(EntityPlayer p_70300_1_) { - return p_70300_1_.getCommandSenderName().equals(tileOwner); + return p_70300_1_.getPersistentID().equals(tileOwner); } @Override @@ -142,6 +149,8 @@ public class TeaAcceptorTile extends TileEntity @Override public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) { + if (teaNetwork == null) return false; + if (!teaNetwork.canAdd(p_94041_2_.stackSize)) return false; return p_94041_2_.getItem() == ItemLoader.kubaitems && p_94041_2_.getItemDamage() >= minDamage && p_94041_2_.getItemDamage() <= maxDamage; } @@ -166,7 +175,7 @@ public class TeaAcceptorTile extends TileEntity ModularWindow.Builder builder = ModularWindow.builder(170, 70); builder.setBackground(ModularUITextures.VANILLA_BACKGROUND); EntityPlayer player = buildContext.getPlayer(); - + AtomicReference<BigInteger> teaAmount = new AtomicReference<>(BigInteger.ZERO); builder.widgets( posCenteredHorizontally( 10, @@ -174,20 +183,24 @@ public class TeaAcceptorTile extends TileEntity new Text("Tea Acceptor").format(EnumChatFormatting.BOLD) .format(EnumChatFormatting.DARK_RED))), posCenteredHorizontally(30, new DynamicTextWidget(() -> { - if (player.getCommandSenderName().equals(tileOwner)) - return new Text("[Tea]").color(Color.GREEN.normal); + if (player.getPersistentID().equals(tileOwner)) return new Text("[Tea]").color(Color.GREEN.normal); else return new Text("This is not your block").color(Color.RED.normal); })), posCenteredHorizontally( 40, - new DynamicTextWidget( + (TextWidget) new DynamicTextWidget( () -> new Text( - (playerData == null ? "ERROR" - : StringUtils.applyRainbow( - NumberFormat.getInstance().format(playerData.teaAmount), - (int) ((playerData.teaAmount / Math.max(1, averageInput * 10)) - % Integer.MAX_VALUE), - EnumChatFormatting.BOLD.toString()))).shadow())), + StringUtils.applyRainbow( + NEIClientUtils.shiftKey() ? numberFormat.format(teaAmount.get()) + : numberFormatScientific.format(teaAmount.get()), + (int) ((teaAmount.get().longValue() / Math.max(1, averageInput * 10)) + % Integer.MAX_VALUE), + EnumChatFormatting.BOLD.toString())).shadow()).setSynced(false) + .attachSyncer( + new FakeSyncWidget.BigIntegerSyncer( + () -> teaNetwork.teaAmount, + teaAmount::set), + builder)), posCenteredHorizontally( 50, new DynamicTextWidget(() -> new Text("IN: " + averageInput + "/t").color(Color.BLACK.normal))) diff --git a/src/main/java/kubatech/tileentity/TeaStorageTile.java b/src/main/java/kubatech/tileentity/TeaStorageTile.java new file mode 100644 index 0000000000..4a3837e3c6 --- /dev/null +++ b/src/main/java/kubatech/tileentity/TeaStorageTile.java @@ -0,0 +1,63 @@ +package kubatech.tileentity; + +import java.math.BigInteger; +import java.util.UUID; + +import kubatech.api.tea.TeaNetwork; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; + +public class TeaStorageTile extends TileEntity { + + public TeaStorageTile() { + super(); + } + + private UUID tileOwner = null; + private TeaNetwork teaNetwork = null; + + public void setTeaOwner(UUID teaOwner) { + if (tileOwner == null) { + tileOwner = teaOwner; + teaNetwork = TeaNetwork.getNetwork(tileOwner); + markDirty(); + teaNetwork.registerTeaStorageExtender(this); + } + } + + @Override + public void readFromNBT(NBTTagCompound NBTData) { + super.readFromNBT(NBTData); + try { + tileOwner = UUID.fromString(NBTData.getString("tileOwner")); + teaNetwork = TeaNetwork.getNetwork(tileOwner); + teaNetwork.registerTeaStorageExtender(this); + } catch (Exception ignored) {} + } + + @Override + public void writeToNBT(NBTTagCompound NBTData) { + super.writeToNBT(NBTData); + NBTData.setString("tileOwner", tileOwner.toString()); + } + + @Override + public boolean canUpdate() { + return false; + } + + public BigInteger teaExtendAmount() { + return BigInteger.valueOf(Long.MAX_VALUE); + } + + @Override + public void onChunkUnload() { + if (teaNetwork != null) teaNetwork.unregisterTeaStorageExtender(this); + } + + @Override + public void invalidate() { + if (teaNetwork != null) teaNetwork.unregisterTeaStorageExtender(this); + } +} |