Crafting improvements
This commit is contained in:
@@ -9,15 +9,10 @@ import refinedstorage.tile.TileMachine;
|
||||
import refinedstorage.tile.autocrafting.task.ICraftingTask;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class TileCraftingMonitor extends TileMachine {
|
||||
public class ClientSideCraftingTask {
|
||||
public ItemStack output;
|
||||
public int id;
|
||||
public String info;
|
||||
}
|
||||
|
||||
private List<ClientSideCraftingTask> tasks = new ArrayList<ClientSideCraftingTask>();
|
||||
|
||||
@Override
|
||||
@@ -64,16 +59,12 @@ public class TileCraftingMonitor extends TileMachine {
|
||||
int outputs = buf.readInt();
|
||||
|
||||
for (int j = 0; j < outputs; ++j) {
|
||||
ClientSideCraftingTask task = new ClientSideCraftingTask();
|
||||
|
||||
task.info = info;
|
||||
task.output = ByteBufUtils.readItemStack(buf);
|
||||
task.id = i;
|
||||
|
||||
newTasks.add(task);
|
||||
newTasks.add(new ClientSideCraftingTask(ByteBufUtils.readItemStack(buf), i, info));
|
||||
}
|
||||
}
|
||||
|
||||
Collections.reverse(newTasks);
|
||||
|
||||
tasks = newTasks;
|
||||
}
|
||||
|
||||
@@ -85,4 +76,16 @@ public class TileCraftingMonitor extends TileMachine {
|
||||
public Class<? extends Container> getContainer() {
|
||||
return ContainerCraftingMonitor.class;
|
||||
}
|
||||
|
||||
public class ClientSideCraftingTask {
|
||||
public ItemStack output;
|
||||
public int id;
|
||||
public String info;
|
||||
|
||||
public ClientSideCraftingTask(ItemStack output, int id, String info) {
|
||||
this.output = output;
|
||||
this.id = id;
|
||||
this.info = info;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ public class BasicCraftingTask implements ICraftingTask {
|
||||
CraftingPattern pattern = controller.getPattern(input);
|
||||
|
||||
if (pattern != null) {
|
||||
controller.addCraftingTask(pattern);
|
||||
controller.addCraftingTask(controller.createCraftingTask(pattern));
|
||||
|
||||
childTasks[i] = true;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ public class CraftingTaskScheduler {
|
||||
if (pattern != null) {
|
||||
scheduledItem = item;
|
||||
|
||||
controller.addCraftingTask(pattern);
|
||||
controller.addCraftingTask(controller.createCraftingTask(pattern));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ public class ProcessingCraftingTask implements ICraftingTask {
|
||||
if (pattern != null) {
|
||||
childTasks[i] = true;
|
||||
|
||||
controller.addCraftingTask(pattern);
|
||||
controller.addCraftingTask(controller.createCraftingTask(pattern));
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ public class StorageHandler {
|
||||
}
|
||||
|
||||
while (quantity > 0) {
|
||||
controller.addCraftingTask(pattern);
|
||||
controller.addCraftingTaskAsLast(controller.createCraftingTask(pattern));
|
||||
|
||||
quantity -= quantityPerRequest;
|
||||
}
|
||||
|
||||
@@ -63,6 +63,7 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
||||
|
||||
private List<CraftingPattern> patterns = new ArrayList<CraftingPattern>();
|
||||
private Stack<ICraftingTask> craftingTasks = new Stack<ICraftingTask>();
|
||||
private List<ICraftingTask> craftingTasksToAddAsLast = new ArrayList<ICraftingTask>();
|
||||
private List<ICraftingTask> craftingTasksToAdd = new ArrayList<ICraftingTask>();
|
||||
private List<ICraftingTask> craftingTasksToCancel = new ArrayList<ICraftingTask>();
|
||||
|
||||
@@ -114,6 +115,11 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
||||
}
|
||||
craftingTasksToAdd.clear();
|
||||
|
||||
for (ICraftingTask task : craftingTasksToAddAsLast) {
|
||||
craftingTasks.add(0, task);
|
||||
}
|
||||
craftingTasksToAddAsLast.clear();
|
||||
|
||||
if (!craftingTasks.empty()) {
|
||||
ICraftingTask top = craftingTasks.peek();
|
||||
|
||||
@@ -264,11 +270,17 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
||||
markDirty();
|
||||
}
|
||||
|
||||
public void addCraftingTask(CraftingPattern pattern) {
|
||||
public void addCraftingTaskAsLast(ICraftingTask task) {
|
||||
craftingTasksToAddAsLast.add(task);
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
public ICraftingTask createCraftingTask(CraftingPattern pattern) {
|
||||
if (pattern.isProcessing()) {
|
||||
addCraftingTask(new ProcessingCraftingTask(pattern));
|
||||
return new ProcessingCraftingTask(pattern);
|
||||
} else {
|
||||
addCraftingTask(new BasicCraftingTask(pattern));
|
||||
return new BasicCraftingTask(pattern);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user