From 9755eadfb0ad87bb70d5daacbef8293e3bb53dd4 Mon Sep 17 00:00:00 2001 From: Chicken Bones Date: Mon, 9 Jul 2012 23:41:27 +1000 Subject: [PATCH] Patches so that pumps and pipes can be moved by frames properly, other buildcraft tiles not tested --- .../src/buildcraft/builders/TileArchitect.java | 1 + .../minecraft/src/buildcraft/builders/TileBuilder.java | 1 + .../minecraft/src/buildcraft/builders/TileFiller.java | 1 + .../minecraft/src/buildcraft/builders/TileMarker.java | 1 + .../minecraft/src/buildcraft/core/TileBuildCraft.java | 9 ++++++++- .../net/minecraft/src/buildcraft/factory/TilePump.java | 4 ++++ .../src/buildcraft/transport/BlockGenericPipe.java | 10 +++++----- .../src/buildcraft/transport/TileGenericPipe.java | 3 ++- 8 files changed, 23 insertions(+), 7 deletions(-) diff --git a/common/net/minecraft/src/buildcraft/builders/TileArchitect.java b/common/net/minecraft/src/buildcraft/builders/TileArchitect.java index 1c83393d..e7c60d8f 100644 --- a/common/net/minecraft/src/buildcraft/builders/TileArchitect.java +++ b/common/net/minecraft/src/buildcraft/builders/TileArchitect.java @@ -290,6 +290,7 @@ public class TileArchitect extends TileBuildCraft implements IInventory { @Override public void invalidate() { + super.invalidate(); destroy(); } diff --git a/common/net/minecraft/src/buildcraft/builders/TileBuilder.java b/common/net/minecraft/src/buildcraft/builders/TileBuilder.java index 0c623cc6..c7123d54 100644 --- a/common/net/minecraft/src/buildcraft/builders/TileBuilder.java +++ b/common/net/minecraft/src/buildcraft/builders/TileBuilder.java @@ -507,6 +507,7 @@ public class TileBuilder extends TileBuildCraft implements IBuilderInventory, IP @Override public void invalidate() { + super.invalidate(); destroy(); } diff --git a/common/net/minecraft/src/buildcraft/builders/TileFiller.java b/common/net/minecraft/src/buildcraft/builders/TileFiller.java index 3e5bf34a..0023b694 100644 --- a/common/net/minecraft/src/buildcraft/builders/TileFiller.java +++ b/common/net/minecraft/src/buildcraft/builders/TileFiller.java @@ -290,6 +290,7 @@ public class TileFiller extends TileBuildCraft implements ISpecialInventory, IPo @Override public void invalidate() { + super.invalidate(); destroy(); } diff --git a/common/net/minecraft/src/buildcraft/builders/TileMarker.java b/common/net/minecraft/src/buildcraft/builders/TileMarker.java index f82a18bf..3642f9dc 100644 --- a/common/net/minecraft/src/buildcraft/builders/TileMarker.java +++ b/common/net/minecraft/src/buildcraft/builders/TileMarker.java @@ -334,6 +334,7 @@ public class TileMarker extends TileBuildCraft implements IAreaProvider { @Override public void invalidate() { + super.invalidate(); destroy(); } diff --git a/common/net/minecraft/src/buildcraft/core/TileBuildCraft.java b/common/net/minecraft/src/buildcraft/core/TileBuildCraft.java index c642efcc..387abbe0 100644 --- a/common/net/minecraft/src/buildcraft/core/TileBuildCraft.java +++ b/common/net/minecraft/src/buildcraft/core/TileBuildCraft.java @@ -48,7 +48,7 @@ public abstract class TileBuildCraft extends TileEntity implements ISynchronized @Override public void updateEntity() { - if (!init) { + if (!init && !isInvalid()) { initialize(); init = true; } @@ -59,6 +59,13 @@ public abstract class TileBuildCraft extends TileEntity implements ISynchronized receptor.getPowerProvider().update(receptor); } } + + @Override + public void invalidate() + { + init = false; + super.invalidate(); + } public void initialize() { Utils.handleBufferedDescription(this); diff --git a/common/net/minecraft/src/buildcraft/factory/TilePump.java b/common/net/minecraft/src/buildcraft/factory/TilePump.java index b3c21ce7..831c4916 100644 --- a/common/net/minecraft/src/buildcraft/factory/TilePump.java +++ b/common/net/minecraft/src/buildcraft/factory/TilePump.java @@ -344,6 +344,7 @@ public class TilePump extends TileMachine implements IMachine, IPowerReceptor { @Override public void invalidate() { + super.invalidate(); destroy(); } @@ -352,6 +353,9 @@ public class TilePump extends TileMachine implements IMachine, IPowerReceptor { if (tube != null) { APIProxy.removeEntity(tube); tube = null; + tubeY = Double.NaN; + aimY = 0; + blocksToPump.clear(); } } diff --git a/common/net/minecraft/src/buildcraft/transport/BlockGenericPipe.java b/common/net/minecraft/src/buildcraft/transport/BlockGenericPipe.java index ebac4909..1cdf9f56 100644 --- a/common/net/minecraft/src/buildcraft/transport/BlockGenericPipe.java +++ b/common/net/minecraft/src/buildcraft/transport/BlockGenericPipe.java @@ -518,12 +518,12 @@ public class BlockGenericPipe extends BlockContainer implements IBlockPipe, ITex public static Pipe getPipe(IBlockAccess blockAccess, int i, int j, int k) { - TileGenericPipe tile = (TileGenericPipe) blockAccess.getBlockTileEntity(i, j, k); - - if (tile != null && !tile.isInvalid()) - return tile.pipe; + TileEntity tile = blockAccess.getBlockTileEntity(i, j, k); - return null; + if(!(tile instanceof TileGenericPipe) || tile.isInvalid()) + return null; + + return ((TileGenericPipe)tile).pipe; } public static boolean isFullyDefined(Pipe pipe) { diff --git a/common/net/minecraft/src/buildcraft/transport/TileGenericPipe.java b/common/net/minecraft/src/buildcraft/transport/TileGenericPipe.java index 5644dae1..244aae2e 100644 --- a/common/net/minecraft/src/buildcraft/transport/TileGenericPipe.java +++ b/common/net/minecraft/src/buildcraft/transport/TileGenericPipe.java @@ -103,7 +103,7 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, ILiqu @Override public void invalidate() { - + initialized = false; super.invalidate(); // if (BlockGenericPipe.isValid(pipe)) @@ -112,6 +112,7 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, ILiqu @Override public void validate() { + super.validate(); bindPipe(); }