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
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

View File

@@ -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();

View File

@@ -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,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);