diff --git a/src/main/java/refinedstorage/block/BlockMachine.java b/src/main/java/refinedstorage/block/BlockMachine.java index c636d1367..0b556c965 100755 --- a/src/main/java/refinedstorage/block/BlockMachine.java +++ b/src/main/java/refinedstorage/block/BlockMachine.java @@ -40,8 +40,6 @@ public abstract class BlockMachine extends BlockBase { @Override public void breakBlock(World world, BlockPos pos, IBlockState state) { - super.breakBlock(world, pos, state); - if (!world.isRemote) { TileMachine machine = (TileMachine) world.getTileEntity(pos); @@ -49,6 +47,8 @@ public abstract class BlockMachine extends BlockBase { machine.onDisconnected(); } } + + super.breakBlock(world, pos, state); } @Override diff --git a/src/main/java/refinedstorage/block/BlockStorage.java b/src/main/java/refinedstorage/block/BlockStorage.java index 17c190dec..90731b399 100755 --- a/src/main/java/refinedstorage/block/BlockStorage.java +++ b/src/main/java/refinedstorage/block/BlockStorage.java @@ -98,22 +98,6 @@ public class BlockStorage extends BlockMachine { return drops; } - @Override - public boolean removedByPlayer(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest) { - if (willHarvest) { - return true; - } - - return super.removedByPlayer(state, world, pos, player, willHarvest); - } - - @Override - public void harvestBlock(World world, EntityPlayer player, BlockPos pos, IBlockState state, TileEntity tile, ItemStack stack) { - super.harvestBlock(world, player, pos, state, tile, stack); - - world.setBlockToAir(pos); - } - @Override public Item createItemForBlock() { return new ItemBlockStorage(); diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index aaf4bf4bf..3ba6de0e8 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -59,7 +59,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor private List machines = new ArrayList(); private List machinesToAdd = new ArrayList(); - private List machinesToRemove = new ArrayList(); + private List machinesToRemove = new ArrayList(); private List clientSideMachines = new ArrayList(); @@ -80,7 +80,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor } public void removeMachine(TileMachine machine) { - machinesToRemove.add(machine); + machinesToRemove.add(machine.getPos()); } @Override @@ -88,14 +88,18 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor super.update(); if (!worldObj.isRemote) { - if (!canRun()) { - disconnectAll(); - } - machines.addAll(machinesToAdd); machinesToAdd.clear(); - machines.removeAll(machinesToRemove); + for (BlockPos pos : machinesToRemove) { + for (TileMachine machine : machines) { + if (machine.getPos().getX() == pos.getX() && machine.getPos().getY() == pos.getY() && machine.getPos().getZ() == pos.getZ()) { + machines.remove(machine); + break; + } + } + } + machinesToRemove.clear(); int lastEnergy = energy.getEnergyStored(); @@ -120,19 +124,17 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor TileCrafter crafter = (TileCrafter) machine; for (int i = 0; i < TileCrafter.PATTERN_SLOTS; ++i) { - if (crafter.getStackInSlot(i) == null) { - continue; + if (crafter.getStackInSlot(i) != null) { + ItemStack pattern = crafter.getStackInSlot(i); + + newPatterns.add(new CraftingPattern( + crafter.getPos().getX(), + crafter.getPos().getY(), + crafter.getPos().getZ(), + ItemPattern.isProcessing(pattern), + ItemPattern.getInputs(pattern), + ItemPattern.getOutputs(pattern))); } - - ItemStack pattern = crafter.getStackInSlot(i); - - newPatterns.add(new CraftingPattern( - crafter.getPos().getX(), - crafter.getPos().getY(), - crafter.getPos().getZ(), - ItemPattern.isProcessing(pattern), - ItemPattern.getInputs(pattern), - ItemPattern.getOutputs(pattern))); } } @@ -179,15 +181,15 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor } } - if (canRun()) { - switch (getType()) { - case NORMAL: + switch (getType()) { + case NORMAL: + if (canRun()) { energy.extractEnergy(energyUsage, false); - break; - case CREATIVE: - energy.setEnergyStored(energy.getMaxEnergyStored()); - break; - } + } + break; + case CREATIVE: + energy.setEnergyStored(energy.getMaxEnergyStored()); + break; } wirelessGridConsumers.removeAll(wirelessGridConsumersToRemove);