Crafting improvements

This commit is contained in:
Raoul Van den Berge
2016-05-25 02:18:34 +02:00
parent de20bcd00a
commit ce68fd6d72
7 changed files with 39 additions and 20 deletions

View File

@@ -1,5 +1,9 @@
# Refined Storage Changelog # Refined Storage Changelog
### 0.7.3
**Features**
- Crafting tasks are now sorted from new to old in the Crafting Monitor
### 0.7.2 ### 0.7.2
**Bugfixes** **Bugfixes**
- Fixed Importer getting stuck on slot - Fixed Importer getting stuck on slot

View File

@@ -9,15 +9,10 @@ import refinedstorage.tile.TileMachine;
import refinedstorage.tile.autocrafting.task.ICraftingTask; import refinedstorage.tile.autocrafting.task.ICraftingTask;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
public class TileCraftingMonitor extends TileMachine { public class TileCraftingMonitor extends TileMachine {
public class ClientSideCraftingTask {
public ItemStack output;
public int id;
public String info;
}
private List<ClientSideCraftingTask> tasks = new ArrayList<ClientSideCraftingTask>(); private List<ClientSideCraftingTask> tasks = new ArrayList<ClientSideCraftingTask>();
@Override @Override
@@ -64,16 +59,12 @@ public class TileCraftingMonitor extends TileMachine {
int outputs = buf.readInt(); int outputs = buf.readInt();
for (int j = 0; j < outputs; ++j) { for (int j = 0; j < outputs; ++j) {
ClientSideCraftingTask task = new ClientSideCraftingTask(); newTasks.add(new ClientSideCraftingTask(ByteBufUtils.readItemStack(buf), i, info));
task.info = info;
task.output = ByteBufUtils.readItemStack(buf);
task.id = i;
newTasks.add(task);
} }
} }
Collections.reverse(newTasks);
tasks = newTasks; tasks = newTasks;
} }
@@ -85,4 +76,16 @@ public class TileCraftingMonitor extends TileMachine {
public Class<? extends Container> getContainer() { public Class<? extends Container> getContainer() {
return ContainerCraftingMonitor.class; 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;
}
}
} }

View File

@@ -71,7 +71,7 @@ public class BasicCraftingTask implements ICraftingTask {
CraftingPattern pattern = controller.getPattern(input); CraftingPattern pattern = controller.getPattern(input);
if (pattern != null) { if (pattern != null) {
controller.addCraftingTask(pattern); controller.addCraftingTask(controller.createCraftingTask(pattern));
childTasks[i] = true; childTasks[i] = true;
} }

View File

@@ -21,7 +21,7 @@ public class CraftingTaskScheduler {
if (pattern != null) { if (pattern != null) {
scheduledItem = item; scheduledItem = item;
controller.addCraftingTask(pattern); controller.addCraftingTask(controller.createCraftingTask(pattern));
} }
} }

View File

@@ -66,7 +66,7 @@ public class ProcessingCraftingTask implements ICraftingTask {
if (pattern != null) { if (pattern != null) {
childTasks[i] = true; childTasks[i] = true;
controller.addCraftingTask(pattern); controller.addCraftingTask(controller.createCraftingTask(pattern));
break; break;
} }

View File

@@ -117,7 +117,7 @@ public class StorageHandler {
} }
while (quantity > 0) { while (quantity > 0) {
controller.addCraftingTask(pattern); controller.addCraftingTaskAsLast(controller.createCraftingTask(pattern));
quantity -= quantityPerRequest; quantity -= quantityPerRequest;
} }

View File

@@ -63,6 +63,7 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
private List<CraftingPattern> patterns = new ArrayList<CraftingPattern>(); private List<CraftingPattern> patterns = new ArrayList<CraftingPattern>();
private Stack<ICraftingTask> craftingTasks = new Stack<ICraftingTask>(); private Stack<ICraftingTask> craftingTasks = new Stack<ICraftingTask>();
private List<ICraftingTask> craftingTasksToAddAsLast = new ArrayList<ICraftingTask>();
private List<ICraftingTask> craftingTasksToAdd = new ArrayList<ICraftingTask>(); private List<ICraftingTask> craftingTasksToAdd = new ArrayList<ICraftingTask>();
private List<ICraftingTask> craftingTasksToCancel = new ArrayList<ICraftingTask>(); private List<ICraftingTask> craftingTasksToCancel = new ArrayList<ICraftingTask>();
@@ -114,6 +115,11 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
} }
craftingTasksToAdd.clear(); craftingTasksToAdd.clear();
for (ICraftingTask task : craftingTasksToAddAsLast) {
craftingTasks.add(0, task);
}
craftingTasksToAddAsLast.clear();
if (!craftingTasks.empty()) { if (!craftingTasks.empty()) {
ICraftingTask top = craftingTasks.peek(); ICraftingTask top = craftingTasks.peek();
@@ -264,11 +270,17 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
markDirty(); markDirty();
} }
public void addCraftingTask(CraftingPattern pattern) { public void addCraftingTaskAsLast(ICraftingTask task) {
craftingTasksToAddAsLast.add(task);
markDirty();
}
public ICraftingTask createCraftingTask(CraftingPattern pattern) {
if (pattern.isProcessing()) { if (pattern.isProcessing()) {
addCraftingTask(new ProcessingCraftingTask(pattern)); return new ProcessingCraftingTask(pattern);
} else { } else {
addCraftingTask(new BasicCraftingTask(pattern)); return new BasicCraftingTask(pattern);
} }
} }