aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorConnor-Colenso <52056774+Connor-Colenso@users.noreply.github.com>2022-10-12 15:57:26 +0100
committerGitHub <noreply@github.com>2022-10-12 15:57:26 +0100
commitb5711d85aae1b89e9979de5625a0a73a499b0920 (patch)
tree43a3aa4ae75251c96245a012badf8a184cfdcc2c /src
parent56e23d871d01a027dad7864504fe4ac81f0e254e (diff)
parent0e46852d83a588fbe876ecb2a5f58e9c18360aa7 (diff)
downloadGT5-Unofficial-b5711d85aae1b89e9979de5625a0a73a499b0920.tar.gz
GT5-Unofficial-b5711d85aae1b89e9979de5625a0a73a499b0920.tar.bz2
GT5-Unofficial-b5711d85aae1b89e9979de5625a0a73a499b0920.zip
Merge pull request #107 from GTNewHorizons/fix/log-spam
Properly fix ender fluid container not saving stuff
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderFluidContainer.java66
1 files changed, 44 insertions, 22 deletions
diff --git a/src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderFluidContainer.java b/src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderFluidContainer.java
index e7ec1b6dd7..d7afb7d5ea 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderFluidContainer.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderFluidContainer.java
@@ -1,45 +1,37 @@
package com.github.technus.tectech.mechanics.enderStorage;
+import com.github.technus.tectech.TecTech;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
import java.io.Serializable;
+import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
public class EnderFluidContainer implements IFluidHandler, Serializable {
- private static final int CAPACITY = 64000;
-
- @Deprecated()
- private int fluidID = -1;
-
- @Deprecated()
- private int fluidQuantity = 0;
+ private static final long serialVersionUID = 2L;
+ private static final int SERIALIZE_TYPE_WITH_NBT = 0;
+ private static final int SERIALIZE_TYPE_WITHOUT_NBT = 1;
+ private static final int SERIALIZE_TYPE_NULL = 2;
- private NBTTagCompound fluid;
+ private static final int CAPACITY = 64000;
+ private transient FluidStack fluidStack;
public EnderFluidContainer() {}
private FluidStack getFluidStack() {
- FluidStack fluidStack = null;
- if (fluidID >= 0) {
- fluid = new FluidStack(fluidID, fluidQuantity).writeToNBT(new NBTTagCompound());
- fluidID = -1;
- fluidQuantity = 0;
- }
- if (fluid != null) {
- fluidStack = FluidStack.loadFluidStackFromNBT(fluid);
- }
return fluidStack;
}
private void setFluidStack(FluidStack fluidStack) {
- if (fluidStack != null) {
- fluid = fluidStack.writeToNBT(new NBTTagCompound());
- } else {
- fluid = null;
- }
+ this.fluidStack = fluidStack;
}
@Override
@@ -104,4 +96,34 @@ public class EnderFluidContainer implements IFluidHandler, Serializable {
public FluidTankInfo[] getTankInfo(ForgeDirection forgeDirection) {
return new FluidTankInfo[] {new FluidTankInfo(getFluidStack(), CAPACITY)};
}
+
+ private void writeObject(ObjectOutputStream out) throws IOException {
+ if (fluidStack != null) {
+ out.writeByte(fluidStack.tag != null ? SERIALIZE_TYPE_WITH_NBT : SERIALIZE_TYPE_WITHOUT_NBT);
+ if (fluidStack.tag != null) CompressedStreamTools.write(fluidStack.tag, out);
+ out.writeUTF(fluidStack.getFluid().getName());
+ out.writeInt(fluidStack.amount);
+ } else {
+ out.writeByte(SERIALIZE_TYPE_NULL);
+ }
+ }
+
+ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+ byte type = in.readByte();
+ NBTTagCompound tag = null;
+ switch (type) {
+ case SERIALIZE_TYPE_WITH_NBT:
+ tag = CompressedStreamTools.read(new DataInputStream(in));
+ case SERIALIZE_TYPE_WITHOUT_NBT:
+ fluidStack = FluidRegistry.getFluidStack(in.readUTF(), in.readInt());
+ break;
+ case SERIALIZE_TYPE_NULL:
+ fluidStack = null;
+ break;
+ default:
+ TecTech.LOGGER.error("Something very wrong... got a fluid container with state " + type);
+ fluidStack = null;
+ }
+ if (fluidStack != null) fluidStack.tag = tag;
+ }
}