Very unstable improved machine searching part2
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user