Apply speed upgrades to crafting process

This commit is contained in:
Raoul Van den Berge
2016-04-30 13:31:30 +02:00
parent 509369c405
commit f46b080780
3 changed files with 26 additions and 14 deletions

View File

@@ -154,22 +154,22 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
syncItems();
}
}
craftingTasks.addAll(craftingTasksToAdd);
craftingTasksToAdd.clear();
Iterator<CraftingTask> it = craftingTasks.iterator();
Iterator<CraftingTask> crIt = craftingTasks.iterator();
while (it.hasNext()) {
CraftingTask task = it.next();
while (crIt.hasNext()) {
CraftingTask task = crIt.next();
if (task.attemptCraft(this)) {
it.remove();
if (ticks % task.getPattern().getSpeed() == 0 && task.update(this)) {
crIt.remove();
push(task.getPattern().getResult());
}
}
}
if (isActive()) {
switch (getType()) {
@@ -185,10 +185,10 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
wirelessGridConsumers.removeAll(wirelessGridConsumersMarkedForRemoval);
wirelessGridConsumersMarkedForRemoval.clear();
Iterator<WirelessGridConsumer> it = wirelessGridConsumers.iterator();
Iterator<WirelessGridConsumer> wgIt = wirelessGridConsumers.iterator();
while (it.hasNext()) {
WirelessGridConsumer consumer = it.next();
while (wgIt.hasNext()) {
WirelessGridConsumer consumer = wgIt.next();
if (!InventoryUtils.compareStack(consumer.getWirelessGrid(), consumer.getPlayer().getHeldItem(consumer.getHand()))) {
consumer.getPlayer().closeScreen(); // This will call onContainerClosed on the Container and remove it from the list
@@ -258,7 +258,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
if (crafter.getStackInSlot(i) != null) {
ItemStack pattern = crafter.getStackInSlot(i);
patterns.add(new CraftingPattern(ItemPattern.getResult(pattern), ItemPattern.getIngredients(pattern), 20));
patterns.add(new CraftingPattern(ItemPattern.getResult(pattern), ItemPattern.getIngredients(pattern), 20 - (crafter.getUpgrades() * 4)));
}
}
}

View File

@@ -43,6 +43,18 @@ public class TileCrafter extends TileMachine implements IInventory {
InventoryUtils.saveInventory(inventory, 0, nbt);
}
public int getUpgrades() {
int upgrades = 0;
for (int i = PATTERN_SLOTS; i < PATTERN_SLOTS + 4; ++i) {
if (inventory.getStackInSlot(i) != null) {
upgrades++;
}
}
return upgrades;
}
@Override
public int getSizeInventory() {
return inventory.getSizeInventory();

View File

@@ -22,7 +22,7 @@ public class CraftingTask {
return pattern;
}
public boolean attemptCraft(TileController controller) {
public boolean update(TileController controller) {
boolean done = true;
for (int i = 0; i < pattern.getIngredients().length; ++i) {