Fix bug where child tasks couldn't be read, 1.0 done
This commit is contained in:
@@ -22,6 +22,10 @@ public abstract class CraftingTask implements ICraftingTask {
|
||||
public static final String NBT_SATISFIED = "Satisfied";
|
||||
public static final String NBT_CHECKED = "Checked";
|
||||
public static final String NBT_TOOK = "Took";
|
||||
public static final String NBT_PATTERN_STACK = "Pattern";
|
||||
public static final String NBT_PATTERN_TYPE = "Type";
|
||||
public static final String NBT_PATTERN_CONTAINER = "Container";
|
||||
|
||||
private static final String NBT_CHILD = "Child";
|
||||
|
||||
protected ICraftingPattern pattern;
|
||||
@@ -120,6 +124,10 @@ public abstract class CraftingTask implements ICraftingTask {
|
||||
tag.setTag(NBT_CHILD, child.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
|
||||
tag.setString(NBT_PATTERN_TYPE, pattern.getId());
|
||||
tag.setTag(NBT_PATTERN_STACK, pattern.getStack().serializeNBT());
|
||||
tag.setLong(NBT_PATTERN_CONTAINER, pattern.getContainer().getPosition().toLong());
|
||||
|
||||
writeBooleanArray(tag, NBT_CHILDREN_CREATED, childrenCreated);
|
||||
writeBooleanArray(tag, NBT_SATISFIED, satisfied);
|
||||
writeBooleanArray(tag, NBT_CHECKED, checked);
|
||||
|
||||
@@ -25,6 +25,7 @@ import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
||||
import refinedstorage.api.autocrafting.ICraftingPatternProvider;
|
||||
import refinedstorage.api.autocrafting.registry.ICraftingTaskFactory;
|
||||
import refinedstorage.api.autocrafting.task.CraftingTask;
|
||||
import refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||
import refinedstorage.api.network.*;
|
||||
import refinedstorage.api.network.grid.IFluidGridHandler;
|
||||
@@ -132,9 +133,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
public static final String NBT_ENERGY_CAPACITY = "EnergyCapacity";
|
||||
|
||||
private static final String NBT_CRAFTING_TASKS = "CraftingTasks";
|
||||
private static final String NBT_CRAFTING_TASK_PATTERN = "Pattern";
|
||||
private static final String NBT_CRAFTING_TASK_TYPE = "Type";
|
||||
private static final String NBT_CRAFTING_TASK_CONTAINER = "Container";
|
||||
|
||||
private static final Comparator<IItemStorage> ITEM_SIZE_COMPARATOR = (left, right) -> {
|
||||
if (left.getStored() == right.getStored()) {
|
||||
@@ -724,15 +722,15 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
}
|
||||
|
||||
public static ICraftingTask readCraftingTask(World world, NBTTagCompound tag) {
|
||||
ItemStack stack = ItemStack.loadItemStackFromNBT(tag.getCompoundTag(NBT_CRAFTING_TASK_PATTERN));
|
||||
ItemStack stack = ItemStack.loadItemStackFromNBT(tag.getCompoundTag(CraftingTask.NBT_PATTERN_STACK));
|
||||
|
||||
if (stack != null && stack.getItem() instanceof ICraftingPatternProvider) {
|
||||
TileEntity container = world.getTileEntity(BlockPos.fromLong(tag.getLong(NBT_CRAFTING_TASK_CONTAINER)));
|
||||
TileEntity container = world.getTileEntity(BlockPos.fromLong(tag.getLong(CraftingTask.NBT_PATTERN_CONTAINER)));
|
||||
|
||||
if (container instanceof ICraftingPatternContainer) {
|
||||
ICraftingPattern pattern = ((ICraftingPatternProvider) stack.getItem()).create(world, stack, (ICraftingPatternContainer) container);
|
||||
|
||||
ICraftingTaskFactory factory = RefinedStorageAPI.instance().getCraftingTaskRegistry().getFactory(tag.getString(NBT_CRAFTING_TASK_TYPE));
|
||||
ICraftingTaskFactory factory = RefinedStorageAPI.instance().getCraftingTaskRegistry().getFactory(tag.getString(CraftingTask.NBT_PATTERN_TYPE));
|
||||
|
||||
if (factory != null) {
|
||||
return factory.create(world, tag, pattern);
|
||||
@@ -754,15 +752,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
NBTTagList list = new NBTTagList();
|
||||
|
||||
for (ICraftingTask task : craftingTasks) {
|
||||
NBTTagCompound taskTag = new NBTTagCompound();
|
||||
|
||||
task.writeToNBT(taskTag);
|
||||
|
||||
taskTag.setString(NBT_CRAFTING_TASK_TYPE, task.getPattern().getId());
|
||||
taskTag.setTag(NBT_CRAFTING_TASK_PATTERN, task.getPattern().getStack().serializeNBT());
|
||||
taskTag.setLong(NBT_CRAFTING_TASK_CONTAINER, task.getPattern().getContainer().getPosition().toLong());
|
||||
|
||||
list.appendTag(taskTag);
|
||||
list.appendTag(task.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
|
||||
tag.setTag(NBT_CRAFTING_TASKS, list);
|
||||
|
||||
Reference in New Issue
Block a user