aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/tileentity
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/tileentity
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/tileentity')
-rw-r--r--src/main/java/kubatech/tileentity/TeaAcceptorTile.java67
-rw-r--r--src/main/java/kubatech/tileentity/TeaStorageTile.java63
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);
+ }
+}