diff options
author | RecursivePineapple <recursive_pineapple@proton.me> | 2024-10-17 06:24:12 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-17 10:24:12 +0000 |
commit | 7ad32098ac5d941f32fff792fc9a11af1097b310 (patch) | |
tree | 203faa4fb671f0d072d7a62e57de3ce5f6ed4e5a /src/main/java/tectech/mechanics/enderStorage/EnderLinkTank.java | |
parent | 55a4816242fc945ae367360bb4002cbb4294816d (diff) | |
download | GT5-Unofficial-7ad32098ac5d941f32fff792fc9a11af1097b310.tar.gz GT5-Unofficial-7ad32098ac5d941f32fff792fc9a11af1097b310.tar.bz2 GT5-Unofficial-7ad32098ac5d941f32fff792fc9a11af1097b310.zip |
Fix several issues with ender tank covers (#3377)
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Co-authored-by: Ethryan <3237986+Ethryan@users.noreply.github.com>
Diffstat (limited to 'src/main/java/tectech/mechanics/enderStorage/EnderLinkTank.java')
-rw-r--r-- | src/main/java/tectech/mechanics/enderStorage/EnderLinkTank.java | 45 |
1 files changed, 40 insertions, 5 deletions
diff --git a/src/main/java/tectech/mechanics/enderStorage/EnderLinkTank.java b/src/main/java/tectech/mechanics/enderStorage/EnderLinkTank.java index 1b14c1371a..fe363b2058 100644 --- a/src/main/java/tectech/mechanics/enderStorage/EnderLinkTank.java +++ b/src/main/java/tectech/mechanics/enderStorage/EnderLinkTank.java @@ -2,11 +2,14 @@ package tectech.mechanics.enderStorage; import java.io.Serializable; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.fluids.IFluidHandler; import com.google.common.base.Objects; +import com.gtnewhorizon.gtnhlib.util.CoordinatePacker; public class EnderLinkTank implements Serializable { @@ -24,12 +27,24 @@ public class EnderLinkTank implements Serializable { D = tile.getWorldObj().provider.dimensionId; } + private EnderLinkTank(int x, int y, int z, int d) { + X = x; + Y = y; + Z = z; + D = d; + } + public IFluidHandler getFluidHandler() { - IFluidHandler fluidHandler = null; - TileEntity tile = DimensionManager.getWorld(D) - .getTileEntity(X, Y, Z); - if (tile instanceof IFluidHandler) fluidHandler = (IFluidHandler) tile; - return fluidHandler; + World world = DimensionManager.getWorld(D); + + if (world == null) return null; + + TileEntity tile = world.getTileEntity(X, Y, Z); + if (tile instanceof IFluidHandler fluidHandler) { + return fluidHandler; + } else { + return null; + } } @Override @@ -44,4 +59,24 @@ public class EnderLinkTank implements Serializable { public int hashCode() { return Objects.hashCode(X, Y, Z, D); } + + public NBTTagCompound save() { + NBTTagCompound data = new NBTTagCompound(); + + data.setLong("coords", CoordinatePacker.pack(X, Y, Z)); + data.setInteger("dim", D); + + return data; + } + + public static EnderLinkTank load(NBTTagCompound data) { + long coords = data.getLong("coords"); + int dim = data.getInteger("dim"); + + return new EnderLinkTank( + CoordinatePacker.unpackX(coords), + CoordinatePacker.unpackY(coords), + CoordinatePacker.unpackZ(coords), + dim); + } } |