Crafting improvements
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user