Revert "Anoter go at fixing #389, Part 2"

This reverts commit c126234f2c.
This commit is contained in:
Raoul Van den Berge
2016-10-02 22:31:15 +02:00
parent fa3c53cefa
commit 33f770b4b3
5 changed files with 54 additions and 82 deletions

View File

@@ -78,16 +78,6 @@ public abstract class CraftingTask implements ICraftingTask {
this.satisfied = satisfied; this.satisfied = satisfied;
} }
protected boolean hasReceivedInputs() {
for (boolean item : satisfied) {
if (!item) {
return false;
}
}
return true;
}
public boolean[] getChecked() { public boolean[] getChecked() {
return checked; return checked;
} }
@@ -108,11 +98,6 @@ public abstract class CraftingTask implements ICraftingTask {
} }
} }
@Override
public boolean isFinished() {
return hasReceivedInputs();
}
@Override @Override
@Nullable @Nullable
public ICraftingTask getChild() { public ICraftingTask getChild() {

View File

@@ -32,12 +32,7 @@ public interface ICraftingTask {
* @param network the network * @param network the network
* @return true if the crafting task is done, false otherwise * @return true if the crafting task is done, false otherwise
*/ */
void update(World world, INetworkMaster network); boolean update(World world, INetworkMaster network);
/**
* @return whether this crafting task is finished
*/
boolean isFinished();
/** /**
* Gets called when the crafting task is cancelled. * Gets called when the crafting task is cancelled.

View File

@@ -13,7 +13,7 @@ public class CraftingTaskNormal extends CraftingTask {
} }
@Override @Override
public void update(World world, INetworkMaster network) { public boolean update(World world, INetworkMaster network) {
for (int i = 0; i < pattern.getInputs().size(); ++i) { for (int i = 0; i < pattern.getInputs().size(); ++i) {
checked[i] = true; checked[i] = true;
@@ -34,8 +34,10 @@ public class CraftingTaskNormal extends CraftingTask {
} }
} }
if (!hasReceivedInputs()) { for (boolean item : satisfied) {
return; if (!item) {
return false;
}
} }
for (ItemStack output : pattern.getOutputs()) { for (ItemStack output : pattern.getOutputs()) {
@@ -47,6 +49,8 @@ public class CraftingTaskNormal extends CraftingTask {
// @TODO: Handle remainder // @TODO: Handle remainder
network.insertItem(byproduct, byproduct.stackSize, false); network.insertItem(byproduct, byproduct.stackSize, false);
} }
return true;
} }
@Override @Override

View File

@@ -35,7 +35,7 @@ public class CraftingTaskProcessing extends CraftingTask {
} }
@Override @Override
public void update(World world, INetworkMaster network) { public boolean update(World world, INetworkMaster network) {
for (int i = 0; i < pattern.getInputs().size(); ++i) { for (int i = 0; i < pattern.getInputs().size(); ++i) {
checked[i] = true; checked[i] = true;
@@ -56,8 +56,8 @@ public class CraftingTaskProcessing extends CraftingTask {
} }
} }
if (!hasReceivedInputs()) { if (!hasTakenInputs()) {
return; return false;
} }
ICraftingPatternContainer container = pattern.getContainer(); ICraftingPatternContainer container = pattern.getContainer();
@@ -77,11 +77,8 @@ public class CraftingTaskProcessing extends CraftingTask {
} else { } else {
tileInUse = null; tileInUse = null;
} }
}
@Override return hasReceivedOutputs();
public boolean isFinished() {
return super.isFinished() && hasReceivedOutputs();
} }
private boolean hasReceivedOutputs() { private boolean hasReceivedOutputs() {
@@ -94,6 +91,16 @@ public class CraftingTaskProcessing extends CraftingTask {
return true; return true;
} }
private boolean hasTakenInputs() {
for (boolean item : satisfied) {
if (!item) {
return false;
}
}
return true;
}
private boolean isTileInUse(INetworkMaster network) { private boolean isTileInUse(INetworkMaster network) {
for (ICraftingTask task : network.getCraftingTasks()) { for (ICraftingTask task : network.getCraftingTasks()) {
if (isTileInUse(task)) { if (isTileInUse(task)) {
@@ -125,7 +132,7 @@ public class CraftingTaskProcessing extends CraftingTask {
} }
public boolean onInserted(ItemStack stack) { public boolean onInserted(ItemStack stack) {
if (!hasReceivedOutputs() && hasReceivedInputs()) { if (!hasReceivedOutputs() && hasTakenInputs()) {
for (int i = 0; i < pattern.getOutputs().size(); ++i) { for (int i = 0; i < pattern.getOutputs().size(); ++i) {
ItemStack output = pattern.getOutputs().get(i); ItemStack output = pattern.getOutputs().get(i);
@@ -191,7 +198,7 @@ public class CraftingTaskProcessing extends CraftingTask {
} }
} }
if (hasReceivedInputs()) { if (hasTakenInputs()) {
builder.append("I=gui.refinedstorage:crafting_monitor.items_processing\n"); builder.append("I=gui.refinedstorage:crafting_monitor.items_processing\n");
for (int i = 0; i < pattern.getInputs().size(); ++i) { for (int i = 0; i < pattern.getInputs().size(); ++i) {

View File

@@ -106,9 +106,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
IBlockState state = tile.worldObj.getBlockState(node.getPosition()); IBlockState state = tile.worldObj.getBlockState(node.getPosition());
ClientNode clientNode = new ClientNode( ClientNode clientNode = new ClientNode(
new ItemStack(state.getBlock(), 1, state.getBlock().getMetaFromState(state)), new ItemStack(state.getBlock(), 1, state.getBlock().getMetaFromState(state)),
1, 1,
node.getEnergyUsage() node.getEnergyUsage()
); );
if (clientNode.getStack().getItem() != null) { if (clientNode.getStack().getItem() != null) {
@@ -275,12 +275,22 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
craftingTasksToAdd.clear(); craftingTasksToAdd.clear();
updateCraftingTasks(CraftingTaskUpdateType.NORMAL); Iterator<ICraftingTask> craftingTaskIterator = craftingTasks.iterator();
while (craftingTaskIterator.hasNext()) {
ICraftingTask task = craftingTaskIterator.next();
if (updateCraftingTask(task)) {
craftingTaskIterator.remove();
craftingTasksChanged = true;
}
}
if (!craftingTasks.isEmpty() || craftingTasksChanged) { if (!craftingTasks.isEmpty() || craftingTasksChanged) {
markDirty(); markDirty();
updateCraftingMonitors(); updateCraftingTasks();
} }
} }
@@ -314,26 +324,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
super.update(); super.update();
} }
enum CraftingTaskUpdateType { private boolean updateCraftingTask(ICraftingTask task) {
NORMAL,
DELETION
}
private void updateCraftingTasks(CraftingTaskUpdateType type) {
Iterator<ICraftingTask> craftingTaskIterator = craftingTasks.iterator();
while (craftingTaskIterator.hasNext()) {
ICraftingTask task = craftingTaskIterator.next();
if (updateCraftingTask(task, type)) {
craftingTaskIterator.remove();
}
}
}
private boolean updateCraftingTask(ICraftingTask task, CraftingTaskUpdateType type) {
if (task.getChild() != null) { if (task.getChild() != null) {
if (updateCraftingTask(task.getChild(), type)) { if (updateCraftingTask(task.getChild())) {
task.setChild(null); task.setChild(null);
} }
@@ -342,18 +335,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
ICraftingPatternContainer container = task.getPattern().getContainer(); ICraftingPatternContainer container = task.getPattern().getContainer();
if (container != null && (ticks % container.getSpeed() == 0 || type == CraftingTaskUpdateType.DELETION)) { return container != null && ticks % container.getSpeed() == 0 && task.update(worldObj, this);
if (type == CraftingTaskUpdateType.NORMAL) {
task.update(worldObj, this);
}
return task.isFinished();
}
return false;
} }
private void updateCraftingMonitors() { public void updateCraftingTasks() {
for (INetworkNode node : nodeGraph.all()) { for (INetworkNode node : nodeGraph.all()) {
if (node instanceof TileCraftingMonitor) { if (node instanceof TileCraftingMonitor) {
((TileCraftingMonitor) node).dataManager.sendParameterToWatchers(TileCraftingMonitor.TASKS); ((TileCraftingMonitor) node).dataManager.sendParameterToWatchers(TileCraftingMonitor.TASKS);
@@ -489,8 +474,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public void sendItemStorageToClient() { public void sendItemStorageToClient() {
worldObj.getMinecraftServer().getPlayerList().getPlayerList().stream() worldObj.getMinecraftServer().getPlayerList().getPlayerList().stream()
.filter(player -> isWatchingGrid(player, EnumGridType.NORMAL, EnumGridType.CRAFTING, EnumGridType.PATTERN)) .filter(player -> isWatchingGrid(player, EnumGridType.NORMAL, EnumGridType.CRAFTING, EnumGridType.PATTERN))
.forEach(this::sendItemStorageToClient); .forEach(this::sendItemStorageToClient);
} }
@Override @Override
@@ -501,15 +486,15 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public void sendItemStorageDeltaToClient(ItemStack stack, int delta) { public void sendItemStorageDeltaToClient(ItemStack stack, int delta) {
worldObj.getMinecraftServer().getPlayerList().getPlayerList().stream() worldObj.getMinecraftServer().getPlayerList().getPlayerList().stream()
.filter(player -> isWatchingGrid(player, EnumGridType.NORMAL, EnumGridType.CRAFTING, EnumGridType.PATTERN)) .filter(player -> isWatchingGrid(player, EnumGridType.NORMAL, EnumGridType.CRAFTING, EnumGridType.PATTERN))
.forEach(player -> RefinedStorage.INSTANCE.network.sendTo(new MessageGridItemDelta(this, stack, delta), player)); .forEach(player -> RefinedStorage.INSTANCE.network.sendTo(new MessageGridItemDelta(this, stack, delta), player));
} }
@Override @Override
public void sendFluidStorageToClient() { public void sendFluidStorageToClient() {
worldObj.getMinecraftServer().getPlayerList().getPlayerList().stream() worldObj.getMinecraftServer().getPlayerList().getPlayerList().stream()
.filter(player -> isWatchingGrid(player, EnumGridType.FLUID)) .filter(player -> isWatchingGrid(player, EnumGridType.FLUID))
.forEach(this::sendFluidStorageToClient); .forEach(this::sendFluidStorageToClient);
} }
@Override @Override
@@ -520,8 +505,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public void sendFluidStorageDeltaToClient(FluidStack stack, int delta) { public void sendFluidStorageDeltaToClient(FluidStack stack, int delta) {
worldObj.getMinecraftServer().getPlayerList().getPlayerList().stream() worldObj.getMinecraftServer().getPlayerList().getPlayerList().stream()
.filter(player -> isWatchingGrid(player, EnumGridType.FLUID)) .filter(player -> isWatchingGrid(player, EnumGridType.FLUID))
.forEach(player -> RefinedStorage.INSTANCE.network.sendTo(new MessageGridFluidDelta(stack, delta), player)); .forEach(player -> RefinedStorage.INSTANCE.network.sendTo(new MessageGridFluidDelta(stack, delta), player));
} }
private boolean isWatchingGrid(EntityPlayer player, EnumGridType... types) { private boolean isWatchingGrid(EntityPlayer player, EnumGridType... types) {
@@ -566,17 +551,13 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
itemStorage.add(ItemHandlerHelper.copyStackWithSize(stack, inserted), false); itemStorage.add(ItemHandlerHelper.copyStackWithSize(stack, inserted), false);
for (int i = 0; i < inserted; ++i) { for (int i = 0; i < inserted; ++i) {
for (int j = 0; j < craftingTasks.size(); ++j) { for (ICraftingTask task : craftingTasks) {
ICraftingTask task = craftingTasks.get(j);
if (inserted == 0) { if (inserted == 0) {
break; break;
} }
if (onInserted(stack, task)) { if (onInserted(stack, task)) {
inserted--; inserted--;
updateCraftingTasks(CraftingTaskUpdateType.DELETION);
} }
} }
} }
@@ -856,7 +837,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public boolean hasCapability(Capability<?> capability, EnumFacing facing) { public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
return capability == CapabilityEnergy.ENERGY return capability == CapabilityEnergy.ENERGY
|| (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) || (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER))
|| super.hasCapability(capability, facing); || super.hasCapability(capability, facing);
} }
} }