diff --git a/CHANGELOG.md b/CHANGELOG.md index 8489ef7c5..0cd71f406 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Fixed NPE in some tiles - Fixed going out of crafting GUI not restoring state (scrollbar and search term) - Fixed not being able to create a pattern in disconnected Pattern Grid +- Fixed not being able to place cake or string ### 0.7 **Bugfixes** diff --git a/src/main/java/refinedstorage/block/BlockMachine.java b/src/main/java/refinedstorage/block/BlockMachine.java index 811581210..f8c3caf2f 100755 --- a/src/main/java/refinedstorage/block/BlockMachine.java +++ b/src/main/java/refinedstorage/block/BlockMachine.java @@ -54,7 +54,6 @@ public abstract class BlockMachine extends BlockBase { super.neighborChanged(state, world, pos, block); if (!world.isRemote) { - System.out.println("NeighbourChange"); ((TileMachine) world.getTileEntity(pos)).searchController(world); } } diff --git a/src/main/java/refinedstorage/container/slot/SlotSpecimen.java b/src/main/java/refinedstorage/container/slot/SlotSpecimen.java index e12043733..2c9210bd7 100755 --- a/src/main/java/refinedstorage/container/slot/SlotSpecimen.java +++ b/src/main/java/refinedstorage/container/slot/SlotSpecimen.java @@ -2,6 +2,7 @@ package refinedstorage.container.slot; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemBlockSpecial; import net.minecraft.item.ItemStack; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.SlotItemHandler; @@ -29,7 +30,7 @@ public class SlotSpecimen extends SlotItemHandler { @Override public boolean isItemValid(ItemStack stack) { - return isBlockOnly() ? (stack.getItem() instanceof ItemBlock) : true; + return isBlockOnly() ? (stack.getItem() instanceof ItemBlock || stack.getItem() instanceof ItemBlockSpecial) : true; } @Override diff --git a/src/main/java/refinedstorage/tile/TileBase.java b/src/main/java/refinedstorage/tile/TileBase.java index 0d03e08ce..e53868e2c 100755 --- a/src/main/java/refinedstorage/tile/TileBase.java +++ b/src/main/java/refinedstorage/tile/TileBase.java @@ -78,7 +78,6 @@ public abstract class TileBase extends TileEntity implements ITickable { public void readFromNBT(NBTTagCompound tag) { super.readFromNBT(tag); - System.out.println("READ FROM NBT " + pos); if (tag.hasKey(NBT_UPDATE)) { readUpdate(tag); } else { diff --git a/src/main/java/refinedstorage/tile/TileConstructor.java b/src/main/java/refinedstorage/tile/TileConstructor.java index 596daa29a..d91ce7f84 100755 --- a/src/main/java/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/refinedstorage/tile/TileConstructor.java @@ -4,7 +4,9 @@ import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.block.SoundType; import net.minecraft.inventory.Container; +import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemBlockSpecial; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; @@ -22,6 +24,8 @@ import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.autocrafting.task.CraftingTaskScheduler; import refinedstorage.tile.config.ICompareConfig; +import java.lang.reflect.Field; + public class TileConstructor extends TileMachine implements ICompareConfig { public static final String NBT_COMPARE = "Compare"; @@ -49,9 +53,24 @@ public class TileConstructor extends TileMachine implements ICompareConfig { if (ticks % RefinedStorageUtils.getSpeed(upgrades, BASE_SPEED, 4) == 0 && filter.getStackInSlot(0) != null) { BlockPos front = pos.offset(getDirection()); - Block block = ((ItemBlock) filter.getStackInSlot(0).getItem()).getBlock(); + Item item = filter.getStackInSlot(0).getItem(); + Block block = null; - if (block.canPlaceBlockAt(worldObj, front)) { + if (item instanceof ItemBlockSpecial) { + try { + Field f = ((ItemBlockSpecial) item).getClass().getDeclaredField("block"); + f.setAccessible(true); + block = (Block) f.get(item); + } catch (IllegalAccessException e) { + // NO OP + } catch (NoSuchFieldException e) { + // NO OP + } + } else if (item instanceof ItemBlock) { + block = ((ItemBlock) item).getBlock(); + } + + if (block != null && block.canPlaceBlockAt(worldObj, front)) { ItemStack took = controller.take(filter.getStackInSlot(0).copy(), compare); if (took != null) {