aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/tectech
diff options
context:
space:
mode:
authorNotAPenguin <michiel.vandeginste@gmail.com>2024-09-23 22:21:30 +0200
committerGitHub <noreply@github.com>2024-09-23 20:21:30 +0000
commitb9f4304cc182802c32197ac15e153d0e840f7a4d (patch)
tree0a891fb8432cec0aa60ffbfcfd69c134ecac3b0b /src/main/java/tectech
parent4a38c5955dfa24785d495e77bbfd86118449c88b (diff)
downloadGT5-Unofficial-b9f4304cc182802c32197ac15e153d0e840f7a4d.tar.gz
GT5-Unofficial-b9f4304cc182802c32197ac15e153d0e840f7a4d.tar.bz2
GT5-Unofficial-b9f4304cc182802c32197ac15e153d0e840f7a4d.zip
Wireless data refactor & fixes (#3264)
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/tectech')
-rw-r--r--src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchDataOutput.java4
-rw-r--r--src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessComputationOutput.java30
-rw-r--r--src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsInput.java23
-rw-r--r--src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsOutput.java11
-rw-r--r--src/main/java/tectech/thing/metaTileEntity/multi/MTEDataBank.java18
-rw-r--r--src/main/java/tectech/thing/metaTileEntity/multi/MTEQuantumComputer.java12
6 files changed, 56 insertions, 42 deletions
diff --git a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchDataOutput.java b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchDataOutput.java
index 094423cb0a..52bc4aeca6 100644
--- a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchDataOutput.java
+++ b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchDataOutput.java
@@ -72,6 +72,10 @@ public class MTEHatchDataOutput extends MTEHatchDataConnector<QuantumDataPacket>
return isOutputFacing(side);
}
+ public void providePacket(QuantumDataPacket packet) {
+ this.q = packet;
+ }
+
@Override
public void moveAround(IGregTechTileEntity aBaseMetaTileEntity) {
IConnectsToDataPipe current = this, source = this, next;
diff --git a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessComputationOutput.java b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessComputationOutput.java
index 8495f95e6f..712cd26d80 100644
--- a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessComputationOutput.java
+++ b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessComputationOutput.java
@@ -1,14 +1,18 @@
package tectech.thing.metaTileEntity.hatch;
+import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.common.WirelessComputationPacket;
+import tectech.mechanics.dataTransport.QuantumDataPacket;
public class MTEHatchWirelessComputationOutput extends MTEHatchDataOutput {
+ private int clearDelay = 0;
+
public MTEHatchWirelessComputationOutput(int aID, String aName, String aNameRegional, int aTier) {
super(aID, aName, aNameRegional, aTier);
@@ -40,11 +44,35 @@ public class MTEHatchWirelessComputationOutput extends MTEHatchDataOutput {
}
@Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
+ if (aNBT.hasKey("clearDelay")) {
+ this.clearDelay = aNBT.getInteger("clearDelay");
+ }
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ aNBT.setInteger("clearDelay", this.clearDelay);
+ }
+
+ @Override
+ public void providePacket(QuantumDataPacket packet) {
+ super.providePacket(packet);
+ // Keep providing to wireless net for 21 ticks, because after this time a new packet from the computer should
+ // have arrived
+ this.clearDelay = 21;
+ }
+
+ @Override
public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
super.onPreTick(aBaseMetaTileEntity, aTick);
if (aBaseMetaTileEntity.isServerSide() && q != null) {
WirelessComputationPacket.uploadData(aBaseMetaTileEntity.getOwnerUuid(), q.getContent(), aTick);
- q = null;
+ if (clearDelay-- == 0) {
+ q = null;
+ }
}
}
diff --git a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsInput.java b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsInput.java
index e7d604328a..f3e4619c05 100644
--- a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsInput.java
+++ b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsInput.java
@@ -18,6 +18,8 @@ import net.minecraftforge.common.util.ForgeDirection;
import org.apache.commons.lang3.reflect.FieldUtils;
+import com.google.common.collect.ImmutableList;
+
import gregtech.api.enums.Dyes;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
@@ -32,6 +34,8 @@ public class MTEHatchWirelessDataItemsInput extends MTEHatchDataAccess {
private String clientLocale = "en_US";
+ private List<ItemStack> dataItems = null;
+
public MTEHatchWirelessDataItemsInput(int aID, String aName, String aNameRegional, int aTier) {
super(aID, aName, aNameRegional, aTier);
TTUtility.setTier(aTier, this);
@@ -118,15 +122,26 @@ public class MTEHatchWirelessDataItemsInput extends MTEHatchDataAccess {
@Override
public List<ItemStack> getInventoryItems(Predicate<ItemStack> filter) {
- WirelessDataStore wirelessData = WirelessDataStore
- .getWirelessDataSticks(getBaseMetaTileEntity().getOwnerUuid());
- return wirelessData.downloadData()
- .stream()
+ if (this.dataItems == null) return ImmutableList.of();
+ return this.dataItems.stream()
.filter(stack -> stack != null && filter.test(stack))
.collect(Collectors.toList());
}
@Override
+ public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ if (aBaseMetaTileEntity.isServerSide()) {
+ // Upload data packet and mark it as uploaded, so it will not be uploaded again
+ // until the data bank resets the wireless network
+ if (aTick % WirelessDataStore.DOWNLOAD_TICK == 0) {
+ WirelessDataStore wirelessDataStore = WirelessDataStore
+ .getWirelessDataSticks(getBaseMetaTileEntity().getOwnerUuid());
+ this.dataItems = wirelessDataStore.downloadData(aTick);
+ }
+ }
+ }
+
+ @Override
public boolean isGivingInformation() {
return true;
}
diff --git a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsOutput.java b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsOutput.java
index 2765598475..df4af869ea 100644
--- a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsOutput.java
+++ b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsOutput.java
@@ -27,8 +27,6 @@ public class MTEHatchWirelessDataItemsOutput extends MTEHatch {
public InventoryDataPacket dataPacket = null;
- public boolean uploadedSinceReset = false;
-
public MTEHatchWirelessDataItemsOutput(int aID, String aName, String aNameRegional, int aTier) {
super(
aID,
@@ -94,7 +92,6 @@ public class MTEHatchWirelessDataItemsOutput extends MTEHatch {
if (dataPacket != null) {
aNBT.setTag("eDATA", dataPacket.toNbt());
}
- aNBT.setBoolean("uploadedSinceReset", uploadedSinceReset);
}
@Override
@@ -103,9 +100,6 @@ public class MTEHatchWirelessDataItemsOutput extends MTEHatch {
if (aNBT.hasKey("eDATA")) {
dataPacket = new InventoryDataPacket(aNBT.getCompoundTag("eDATA"));
}
- if (aNBT.hasKey("uploadedSinceReset")) {
- uploadedSinceReset = aNBT.getBoolean("uploadedSinceReset");
- }
}
@Override
@@ -113,11 +107,10 @@ public class MTEHatchWirelessDataItemsOutput extends MTEHatch {
if (aBaseMetaTileEntity.isServerSide()) {
// Upload data packet and mark it as uploaded, so it will not be uploaded again
// until the data bank resets the wireless network
- if (dataPacket != null && !uploadedSinceReset) {
+ if (dataPacket != null && (aTick % WirelessDataStore.UPLOAD_TICK) == 0) {
WirelessDataStore wirelessDataStore = WirelessDataStore
.getWirelessDataSticks(getBaseMetaTileEntity().getOwnerUuid());
- wirelessDataStore.uploadData(Arrays.asList(dataPacket.getContent()));
- uploadedSinceReset = true;
+ wirelessDataStore.uploadData(Arrays.asList(dataPacket.getContent()), aTick);
}
}
}
diff --git a/src/main/java/tectech/thing/metaTileEntity/multi/MTEDataBank.java b/src/main/java/tectech/thing/metaTileEntity/multi/MTEDataBank.java
index 30a417ae91..d3e52b9716 100644
--- a/src/main/java/tectech/thing/metaTileEntity/multi/MTEDataBank.java
+++ b/src/main/java/tectech/thing/metaTileEntity/multi/MTEDataBank.java
@@ -41,7 +41,6 @@ import gregtech.api.util.GTUtility;
import gregtech.api.util.IGTHatchAdder;
import gregtech.api.util.MultiblockTooltipBuilder;
import gregtech.common.WirelessComputationPacket;
-import gregtech.common.WirelessDataStore;
import tectech.Reference;
import tectech.mechanics.dataTransport.InventoryDataPacket;
import tectech.recipe.TTRecipeAdder;
@@ -249,23 +248,6 @@ public class MTEDataBank extends TTMultiblockBase implements ISurvivalConstructa
}
@Override
- public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
- super.onPreTick(aBaseMetaTileEntity, aTick);
- // Every 200 ticks, clear wireless data store so hatches need to provide their data again in
- // their onPostTick() call. This also happens every 200 ticks
- if (mMachine && aBaseMetaTileEntity.isActive() && wirelessModeEnabled && aTick % 200 == 0) {
- WirelessDataStore wirelessStore = WirelessDataStore
- .getWirelessDataSticks(aBaseMetaTileEntity.getOwnerUuid());
- wirelessStore.clearData();
-
- // After reset, clear uploadedSinceReset of all connected hatches
- for (MTEHatchWirelessDataItemsOutput hatch : eWirelessStacksDataOutputs) {
- hatch.uploadedSinceReset = false;
- }
- }
- }
-
- @Override
public void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) {
if (getBaseMetaTileEntity().isServerSide()) {
wirelessModeEnabled = !wirelessModeEnabled;
diff --git a/src/main/java/tectech/thing/metaTileEntity/multi/MTEQuantumComputer.java b/src/main/java/tectech/thing/metaTileEntity/multi/MTEQuantumComputer.java
index 25dd5f6ec6..4c57cbe376 100644
--- a/src/main/java/tectech/thing/metaTileEntity/multi/MTEQuantumComputer.java
+++ b/src/main/java/tectech/thing/metaTileEntity/multi/MTEQuantumComputer.java
@@ -235,14 +235,6 @@ public class MTEQuantumComputer extends TTMultiblockBase implements ISurvivalCon
}
@Override
- public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
- super.onPreTick(aBaseMetaTileEntity, aTick);
- if (aBaseMetaTileEntity.isServerSide() && wirelessModeEnabled && aTick % 20 == 0) {
- WirelessComputationPacket.updatePacket(aBaseMetaTileEntity, aTick);
- }
- }
-
- @Override
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
super.onPostTick(aBaseMetaTileEntity, aTick);
if (aBaseMetaTileEntity.isServerSide() && mMachine
@@ -346,7 +338,7 @@ public class MTEQuantumComputer extends TTMultiblockBase implements ISurvivalCon
}
for (MTEHatchDataOutput o : eOutputData) {
- o.q = pack;
+ o.providePacket(pack);
}
}
}
@@ -570,7 +562,7 @@ public class MTEQuantumComputer extends TTMultiblockBase implements ISurvivalCon
data.add("Wireless mode: " + EnumChatFormatting.GREEN + "enabled");
data.add(
"Total wireless computation available: " + EnumChatFormatting.YELLOW
- + wirelessComputationPacket.getTotalComputationStored());
+ + wirelessComputationPacket.getAvailableComputationStored());
} else {
data.add("Wireless mode: " + EnumChatFormatting.RED + "disabled");
}