diff --git a/src/main/java/refinedstorage/tile/TileConstructor.java b/src/main/java/refinedstorage/tile/TileConstructor.java index d361a8502..0165d673f 100755 --- a/src/main/java/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/refinedstorage/tile/TileConstructor.java @@ -1,5 +1,6 @@ package refinedstorage.tile; +import mcmultipart.microblock.IMicroblock; import net.minecraft.block.SoundType; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; @@ -46,6 +47,11 @@ public class TileConstructor extends TileMultipartNode implements IComparable { dataManager.addWatchedParameter(COMPARE); } + @Override + public boolean canAddMicroblock(IMicroblock microblock) { + return !isBlockingMicroblock(microblock, getDirection()); + } + @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.constructorUsage + upgrades.getEnergyUsage(); diff --git a/src/main/java/refinedstorage/tile/TileDestructor.java b/src/main/java/refinedstorage/tile/TileDestructor.java index 2424d46fc..71651bde3 100755 --- a/src/main/java/refinedstorage/tile/TileDestructor.java +++ b/src/main/java/refinedstorage/tile/TileDestructor.java @@ -1,5 +1,6 @@ package refinedstorage.tile; +import mcmultipart.microblock.IMicroblock; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.inventory.InventoryHelper; @@ -40,6 +41,11 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF dataManager.addWatchedParameter(MODE); } + @Override + public boolean canAddMicroblock(IMicroblock microblock) { + return !isBlockingMicroblock(microblock, getDirection()); + } + @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.destructorUsage + upgrades.getEnergyUsage(); diff --git a/src/main/java/refinedstorage/tile/TileExporter.java b/src/main/java/refinedstorage/tile/TileExporter.java index 78c66e634..489d505e2 100755 --- a/src/main/java/refinedstorage/tile/TileExporter.java +++ b/src/main/java/refinedstorage/tile/TileExporter.java @@ -1,5 +1,6 @@ package refinedstorage.tile; +import mcmultipart.microblock.IMicroblock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; @@ -31,6 +32,11 @@ public class TileExporter extends TileMultipartNode implements IComparable { dataManager.addWatchedParameter(COMPARE); } + @Override + public boolean canAddMicroblock(IMicroblock microblock) { + return !isBlockingMicroblock(microblock, getDirection()); + } + @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.exporterUsage + upgrades.getEnergyUsage(); diff --git a/src/main/java/refinedstorage/tile/TileImporter.java b/src/main/java/refinedstorage/tile/TileImporter.java index 045dab5bf..0ad6f77f7 100755 --- a/src/main/java/refinedstorage/tile/TileImporter.java +++ b/src/main/java/refinedstorage/tile/TileImporter.java @@ -1,5 +1,6 @@ package refinedstorage.tile; +import mcmultipart.microblock.IMicroblock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; @@ -34,6 +35,11 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil dataManager.addWatchedParameter(MODE); } + @Override + public boolean canAddMicroblock(IMicroblock microblock) { + return !isBlockingMicroblock(microblock, getDirection()); + } + @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.importerUsage + upgrades.getEnergyUsage(); diff --git a/src/main/java/refinedstorage/tile/TileMultipartNode.java b/src/main/java/refinedstorage/tile/TileMultipartNode.java index 2095975e4..6cdbe3c49 100755 --- a/src/main/java/refinedstorage/tile/TileMultipartNode.java +++ b/src/main/java/refinedstorage/tile/TileMultipartNode.java @@ -82,12 +82,8 @@ public abstract class TileMultipartNode extends TileNode implements IMicroblockC if (tile instanceof TileMultipartNode) { for (IMicroblock microblock : ((TileMultipartNode) tile).getMicroblockContainer().getParts()) { - if (microblock instanceof IMicroblock.IFaceMicroblock) { - IMicroblock.IFaceMicroblock faceMicroblock = (IMicroblock.IFaceMicroblock) microblock; - - if (faceMicroblock.getFace() == direction && !faceMicroblock.isFaceHollow()) { - return true; - } + if (isBlockingMicroblock(microblock, direction)) { + return true; } } } @@ -95,6 +91,16 @@ public abstract class TileMultipartNode extends TileNode implements IMicroblockC return false; } + public static boolean isBlockingMicroblock(IMicroblock microblock, EnumFacing direction) { + if (!(microblock instanceof IMicroblock.IFaceMicroblock)) { + return false; + } + + IMicroblock.IFaceMicroblock faceMicroblock = (IMicroblock.IFaceMicroblock) microblock; + + return faceMicroblock.getFace() == direction && !faceMicroblock.isFaceHollow(); + } + @Override public boolean canConduct(EnumFacing direction) { return !hasBlockingMicroblock(worldObj, pos, direction) && !hasBlockingMicroblock(worldObj, pos.offset(direction), direction.getOpposite()); diff --git a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java index ba0165c82..b6f740d3d 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java +++ b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java @@ -2,6 +2,7 @@ package refinedstorage.tile.externalstorage; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawerGroup; +import mcmultipart.microblock.IMicroblock; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.datasync.DataSerializers; import net.minecraft.tileentity.TileEntity; @@ -64,6 +65,11 @@ public class TileExternalStorage extends TileMultipartNode implements IStoragePr dataManager.addWatchedParameter(CAPACITY); } + @Override + public boolean canAddMicroblock(IMicroblock microblock) { + return !isBlockingMicroblock(microblock, getDirection()); + } + @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.externalStorageUsage + (storages.size() * RefinedStorage.INSTANCE.externalStoragePerStorageUsage);