diff options
Diffstat (limited to 'src/main/java/tectech/thing/metaTileEntity')
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"); } |