Very unstable improved machine searching part2

This commit is contained in:
Raoul Van den Berge
2016-05-13 21:58:48 +02:00
parent fbb07f82fa
commit 136e2564f1
3 changed files with 31 additions and 45 deletions

View File

@@ -40,8 +40,6 @@ public abstract class BlockMachine extends BlockBase {
@Override @Override
public void breakBlock(World world, BlockPos pos, IBlockState state) { public void breakBlock(World world, BlockPos pos, IBlockState state) {
super.breakBlock(world, pos, state);
if (!world.isRemote) { if (!world.isRemote) {
TileMachine machine = (TileMachine) world.getTileEntity(pos); TileMachine machine = (TileMachine) world.getTileEntity(pos);
@@ -49,6 +47,8 @@ public abstract class BlockMachine extends BlockBase {
machine.onDisconnected(); machine.onDisconnected();
} }
} }
super.breakBlock(world, pos, state);
} }
@Override @Override

View File

@@ -98,22 +98,6 @@ public class BlockStorage extends BlockMachine {
return drops; 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 @Override
public Item createItemForBlock() { public Item createItemForBlock() {
return new ItemBlockStorage(); return new ItemBlockStorage();

View File

@@ -59,7 +59,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
private List<TileMachine> machines = new ArrayList<TileMachine>(); private List<TileMachine> machines = new ArrayList<TileMachine>();
private List<TileMachine> machinesToAdd = new ArrayList<TileMachine>(); private List<TileMachine> machinesToAdd = new ArrayList<TileMachine>();
private List<TileMachine> machinesToRemove = new ArrayList<TileMachine>(); private List<BlockPos> machinesToRemove = new ArrayList<BlockPos>();
private List<ClientSideMachine> clientSideMachines = new ArrayList<ClientSideMachine>(); private List<ClientSideMachine> clientSideMachines = new ArrayList<ClientSideMachine>();
@@ -80,7 +80,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
} }
public void removeMachine(TileMachine machine) { public void removeMachine(TileMachine machine) {
machinesToRemove.add(machine); machinesToRemove.add(machine.getPos());
} }
@Override @Override
@@ -88,14 +88,18 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
super.update(); super.update();
if (!worldObj.isRemote) { if (!worldObj.isRemote) {
if (!canRun()) {
disconnectAll();
}
machines.addAll(machinesToAdd); machines.addAll(machinesToAdd);
machinesToAdd.clear(); 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(); machinesToRemove.clear();
int lastEnergy = energy.getEnergyStored(); int lastEnergy = energy.getEnergyStored();
@@ -120,10 +124,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
TileCrafter crafter = (TileCrafter) machine; TileCrafter crafter = (TileCrafter) machine;
for (int i = 0; i < TileCrafter.PATTERN_SLOTS; ++i) { for (int i = 0; i < TileCrafter.PATTERN_SLOTS; ++i) {
if (crafter.getStackInSlot(i) == null) { if (crafter.getStackInSlot(i) != null) {
continue;
}
ItemStack pattern = crafter.getStackInSlot(i); ItemStack pattern = crafter.getStackInSlot(i);
newPatterns.add(new CraftingPattern( newPatterns.add(new CraftingPattern(
@@ -135,6 +136,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
ItemPattern.getOutputs(pattern))); ItemPattern.getOutputs(pattern)));
} }
} }
}
newEnergyUsage += machine.getEnergyUsage(); newEnergyUsage += machine.getEnergyUsage();
} }
@@ -179,16 +181,16 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
} }
} }
if (canRun()) {
switch (getType()) { switch (getType()) {
case NORMAL: case NORMAL:
if (canRun()) {
energy.extractEnergy(energyUsage, false); energy.extractEnergy(energyUsage, false);
}
break; break;
case CREATIVE: case CREATIVE:
energy.setEnergyStored(energy.getMaxEnergyStored()); energy.setEnergyStored(energy.getMaxEnergyStored());
break; break;
} }
}
wirelessGridConsumers.removeAll(wirelessGridConsumersToRemove); wirelessGridConsumers.removeAll(wirelessGridConsumersToRemove);
wirelessGridConsumersToRemove.clear(); wirelessGridConsumersToRemove.clear();