From d033b5af64b186f6b3ac76036b89bc91dd2fd1c7 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sun, 27 Mar 2016 15:13:52 +0200 Subject: [PATCH] Better check for placing blocks in constructor --- src/main/java/refinedstorage/tile/TileConstructor.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/refinedstorage/tile/TileConstructor.java b/src/main/java/refinedstorage/tile/TileConstructor.java index f138c2cf0..361c7aef2 100755 --- a/src/main/java/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/refinedstorage/tile/TileConstructor.java @@ -1,6 +1,7 @@ package refinedstorage.tile; import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; @@ -26,14 +27,16 @@ public class TileConstructor extends TileMachine implements ICompareSetting { @Override public void updateMachine() { - if (ticks % SPEED == 0) { + if (ticks % SPEED == 0 && inventory.getStackInSlot(0) != null) { BlockPos front = pos.offset(getDirection()); - if ((worldObj.isAirBlock(front) || worldObj.getBlockState(front).getBlock().getMaterial(worldObj.getBlockState(front)).isLiquid()) && inventory.getStackInSlot(0) != null) { + Block tryingToPlace = ((ItemBlock) inventory.getStackInSlot(0).getItem()).getBlock(); + + if (tryingToPlace.canPlaceBlockAt(worldObj, front)) { ItemStack took = getController().take(inventory.getStackInSlot(0).copy(), compare); if (took != null) { - worldObj.setBlockState(front, ((ItemBlock) took.getItem()).getBlock().getStateFromMeta(took.getItemDamage()), 1 | 2); + worldObj.setBlockState(front, tryingToPlace.getStateFromMeta(took.getItemDamage()), 1 | 2); } } }