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,20 +154,20 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
syncItems(); syncItems();
} }
}
craftingTasks.addAll(craftingTasksToAdd); craftingTasks.addAll(craftingTasksToAdd);
craftingTasksToAdd.clear(); craftingTasksToAdd.clear();
Iterator<CraftingTask> it = craftingTasks.iterator(); Iterator<CraftingTask> crIt = craftingTasks.iterator();
while (it.hasNext()) { while (crIt.hasNext()) {
CraftingTask task = it.next(); CraftingTask task = crIt.next();
if (task.attemptCraft(this)) { if (ticks % task.getPattern().getSpeed() == 0 && task.update(this)) {
it.remove(); crIt.remove();
push(task.getPattern().getResult()); push(task.getPattern().getResult());
}
} }
} }
@@ -185,10 +185,10 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
wirelessGridConsumers.removeAll(wirelessGridConsumersMarkedForRemoval); wirelessGridConsumers.removeAll(wirelessGridConsumersMarkedForRemoval);
wirelessGridConsumersMarkedForRemoval.clear(); wirelessGridConsumersMarkedForRemoval.clear();
Iterator<WirelessGridConsumer> it = wirelessGridConsumers.iterator(); Iterator<WirelessGridConsumer> wgIt = wirelessGridConsumers.iterator();
while (it.hasNext()) { while (wgIt.hasNext()) {
WirelessGridConsumer consumer = it.next(); WirelessGridConsumer consumer = wgIt.next();
if (!InventoryUtils.compareStack(consumer.getWirelessGrid(), consumer.getPlayer().getHeldItem(consumer.getHand()))) { 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 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) { if (crafter.getStackInSlot(i) != null) {
ItemStack pattern = crafter.getStackInSlot(i); 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); 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 @Override
public int getSizeInventory() { public int getSizeInventory() {
return inventory.getSizeInventory(); return inventory.getSizeInventory();

View File

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