Very unstable improved machine searching part2
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -59,7 +59,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
|
||||
|
||||
private List<TileMachine> machines = 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>();
|
||||
|
||||
@@ -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,10 +124,7 @@ 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(
|
||||
@@ -135,6 +136,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
|
||||
ItemPattern.getOutputs(pattern)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
newEnergyUsage += machine.getEnergyUsage();
|
||||
}
|
||||
@@ -179,16 +181,16 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
|
||||
}
|
||||
}
|
||||
|
||||
if (canRun()) {
|
||||
switch (getType()) {
|
||||
case NORMAL:
|
||||
if (canRun()) {
|
||||
energy.extractEnergy(energyUsage, false);
|
||||
}
|
||||
break;
|
||||
case CREATIVE:
|
||||
energy.setEnergyStored(energy.getMaxEnergyStored());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
wirelessGridConsumers.removeAll(wirelessGridConsumersToRemove);
|
||||
wirelessGridConsumersToRemove.clear();
|
||||
|
||||
Reference in New Issue
Block a user