Add reader / writer API
This commit is contained in:
@@ -4,6 +4,8 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftin
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElementRegistry;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreviewElementRegistry;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskRegistry;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerRegistry;
|
||||
import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRegistry;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IFluidStackList;
|
||||
@@ -48,6 +50,18 @@ public interface IRSAPI {
|
||||
@Nonnull
|
||||
ICraftingPreviewElementRegistry getCraftingPreviewElementRegistry();
|
||||
|
||||
/**
|
||||
* @return the reader writer handler registry
|
||||
*/
|
||||
@Nonnull
|
||||
IReaderWriterHandlerRegistry getReaderWriterHandlerRegistry();
|
||||
|
||||
/**
|
||||
* @return a new reader writer channel
|
||||
*/
|
||||
@Nonnull
|
||||
IReaderWriterChannel createReaderWriterChannel();
|
||||
|
||||
/**
|
||||
* @return an empty item stack list
|
||||
*/
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||
import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.fluid.IFluidStorageCache;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.item.IItemStorageCache;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
@@ -19,6 +20,7 @@ import net.minecraftforge.fluids.FluidStack;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Represents a network master, usually is a controller.
|
||||
@@ -225,6 +227,11 @@ public interface INetworkMaster {
|
||||
*/
|
||||
void sendCraftingMonitorUpdate(EntityPlayerMP player);
|
||||
|
||||
/**
|
||||
* @return a map with the reader and writer channels
|
||||
*/
|
||||
Map<String, IReaderWriterChannel> getReaderWriterChannels();
|
||||
|
||||
/**
|
||||
* Inserts an item in this network.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.raoulvdberge.refinedstorage.api.network.readerwriter;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
|
||||
|
||||
public interface IReader extends INetworkNode {
|
||||
int getRedstoneStrength();
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.raoulvdberge.refinedstorage.api.network.readerwriter;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IReaderWriterChannel {
|
||||
void addHandlers();
|
||||
|
||||
List<IReaderWriterHandler> getHandlers();
|
||||
|
||||
NBTTagCompound writeToNBT(NBTTagCompound tag);
|
||||
|
||||
void readFromNBT(NBTTagCompound tag);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.raoulvdberge.refinedstorage.api.network.readerwriter;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
||||
|
||||
public interface IReaderWriterHandler extends ICapabilityProvider {
|
||||
void update(IReader reader, IWriter writer);
|
||||
|
||||
NBTTagCompound writeToNBT(NBTTagCompound tag);
|
||||
|
||||
String getId();
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.raoulvdberge.refinedstorage.api.network.readerwriter;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public interface IReaderWriterHandlerFactory {
|
||||
@Nonnull
|
||||
IReaderWriterHandler create(@Nullable NBTTagCompound tag);
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.raoulvdberge.refinedstorage.api.network.readerwriter;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collection;
|
||||
|
||||
public interface IReaderWriterHandlerRegistry {
|
||||
void add(String id, IReaderWriterHandlerFactory factory);
|
||||
|
||||
@Nullable
|
||||
IReaderWriterHandlerFactory getFactory(String id);
|
||||
|
||||
Collection<IReaderWriterHandlerFactory> getFactories();
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.raoulvdberge.refinedstorage.api.network.readerwriter;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
public interface IWriter extends INetworkNode {
|
||||
int getRedstoneStrength();
|
||||
|
||||
void setRedstoneStrength(int strength);
|
||||
|
||||
EnumFacing getDirection();
|
||||
|
||||
boolean hasStackUpgrade();
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftin
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElementRegistry;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreviewElementRegistry;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskRegistry;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerRegistry;
|
||||
import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRegistry;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IFluidStackList;
|
||||
@@ -14,6 +15,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.Craf
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementRegistry;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementRegistry;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskRegistry;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerRegistry;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.solderer.SoldererRegistry;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.Comparer;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.FluidStackList;
|
||||
@@ -34,6 +36,7 @@ public class API implements IRSAPI {
|
||||
private ICraftingTaskRegistry craftingTaskRegistry = new CraftingTaskRegistry();
|
||||
private ICraftingMonitorElementRegistry craftingMonitorElementRegistry = new CraftingMonitorElementRegistry();
|
||||
private ICraftingPreviewElementRegistry craftingPreviewElementRegistry = new CraftingPreviewElementRegistry();
|
||||
private IReaderWriterHandlerRegistry readerWriterHandlerRegistry = new ReaderWriterHandlerRegistry();
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@@ -65,6 +68,12 @@ public class API implements IRSAPI {
|
||||
return craftingPreviewElementRegistry;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public IReaderWriterHandlerRegistry getReaderWriterHandlerRegistry() {
|
||||
return readerWriterHandlerRegistry;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public IItemStackList createItemStackList() {
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerFactory;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraftforge.common.util.Constants;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ReaderWriterChannel implements IReaderWriterChannel {
|
||||
private static final String NBT_HANDLER_ID = "HandlerID";
|
||||
private static final String NBT_HANDLERS = "Handlers";
|
||||
|
||||
private List<IReaderWriterHandler> handlers = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void addHandlers() {
|
||||
handlers.addAll(API.instance().getReaderWriterHandlerRegistry().getFactories().stream().map(f -> f.create(null)).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IReaderWriterHandler> getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
||||
NBTTagList handlersList = new NBTTagList();
|
||||
|
||||
for (IReaderWriterHandler handler : handlers) {
|
||||
NBTTagCompound handlerTag = handler.writeToNBT(new NBTTagCompound());
|
||||
|
||||
handlerTag.setString(NBT_HANDLER_ID, handler.getId());
|
||||
|
||||
handlersList.appendTag(handlerTag);
|
||||
}
|
||||
|
||||
tag.setTag(NBT_HANDLERS, handlersList);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound tag) {
|
||||
if (!tag.hasKey(NBT_HANDLER_ID)) {
|
||||
return;
|
||||
}
|
||||
|
||||
NBTTagList handlersList = tag.getTagList(NBT_HANDLERS, Constants.NBT.TAG_COMPOUND);
|
||||
|
||||
for (int i = 0; i < handlersList.tagCount(); ++i) {
|
||||
NBTTagCompound handlerTag = handlersList.getCompoundTagAt(i);
|
||||
|
||||
String id = handlerTag.getString(NBT_HANDLER_ID);
|
||||
|
||||
IReaderWriterHandlerFactory factory = API.instance().getReaderWriterHandlerRegistry().getFactory(id);
|
||||
|
||||
if (factory != null) {
|
||||
handlers.add(factory.create(tag));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IWriter;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class ReaderWriterHandlerItems implements IReaderWriterHandler {
|
||||
public static final String ID = "items";
|
||||
|
||||
private ItemStackHandler internalInv;
|
||||
|
||||
public ReaderWriterHandlerItems(@Nullable NBTTagCompound tag) {
|
||||
this.internalInv = new ItemHandlerReaderWriter(4);
|
||||
|
||||
if (tag != null) {
|
||||
RSUtils.readItems(internalInv, 0, tag);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(IReader reader, IWriter writer) {
|
||||
IItemHandler handler = RSUtils.getItemHandler(writer.getNodeWorld().getTileEntity(writer.getPosition().offset(writer.getDirection())), writer.getDirection().getOpposite());
|
||||
|
||||
if (handler != null) {
|
||||
for (int i = 0; i < internalInv.getSlots(); ++i) {
|
||||
ItemStack slot = internalInv.getStackInSlot(i);
|
||||
|
||||
if (slot != null) {
|
||||
ItemStack toInsert = ItemHandlerHelper.copyStackWithSize(slot, writer.hasStackUpgrade() ? 64 : 1);
|
||||
|
||||
if (ItemHandlerHelper.insertItem(handler, toInsert, true) == null) {
|
||||
ItemHandlerHelper.insertItem(handler, toInsert, false);
|
||||
|
||||
internalInv.getStackInSlot(i).stackSize -= toInsert.stackSize;
|
||||
|
||||
if (internalInv.getStackInSlot(i).stackSize <= 0) {
|
||||
internalInv.setStackInSlot(i, null);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
||||
RSUtils.writeItems(internalInv, 0, tag);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) {
|
||||
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing) {
|
||||
return (T) internalInv;
|
||||
}
|
||||
|
||||
private class ItemHandlerReaderWriter extends ItemStackHandler {
|
||||
private ItemHandlerReaderWriter(int size) {
|
||||
super(size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack extractItem(int slot, int amount, boolean simulate) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerFactory;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerRegistry;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class ReaderWriterHandlerRegistry implements IReaderWriterHandlerRegistry {
|
||||
private Map<String, IReaderWriterHandlerFactory> factories = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void add(String id, IReaderWriterHandlerFactory factory) {
|
||||
factories.put(id, factory);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public IReaderWriterHandlerFactory getFactory(String id) {
|
||||
return factories.get(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<IReaderWriterHandlerFactory> getFactories() {
|
||||
return factories.values();
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.*;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementFluidStack;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementItemStack;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskFactory;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerItems;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.solderer.*;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
||||
@@ -73,6 +74,8 @@ public class ProxyCommon {
|
||||
API.instance().getCraftingPreviewElementRegistry().add(CraftingPreviewElementItemStack.ID, CraftingPreviewElementItemStack::fromByteBuf);
|
||||
API.instance().getCraftingPreviewElementRegistry().add(CraftingPreviewElementFluidStack.ID, CraftingPreviewElementFluidStack::fromByteBuf);
|
||||
|
||||
API.instance().getReaderWriterHandlerRegistry().add(ReaderWriterHandlerItems.ID, tag -> new ReaderWriterHandlerItems(tag));
|
||||
|
||||
int id = 0;
|
||||
|
||||
RS.INSTANCE.network.registerMessage(MessageTileDataParameter.class, MessageTileDataParameter.class, id++, Side.CLIENT);
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph;
|
||||
import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.IStorage;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.fluid.IFluidStorage;
|
||||
@@ -141,6 +142,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
|
||||
private static final String NBT_CRAFTING_TASKS = "CraftingTasks";
|
||||
|
||||
private static final String NBT_READER_WRITER_CHANNELS = "ReaderWriterChannels";
|
||||
private static final String NBT_READER_WRITER_NAME = "Name";
|
||||
|
||||
private static final Comparator<ClientNode> CLIENT_NODE_COMPARATOR = (left, right) -> {
|
||||
if (left.getEnergyUsage() == right.getEnergyUsage()) {
|
||||
return 0;
|
||||
@@ -165,6 +169,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
private IItemStorageCache itemStorage = new ItemStorageCache(this);
|
||||
private IFluidStorageCache fluidStorage = new FluidStorageCache(this);
|
||||
|
||||
private Map<String, IReaderWriterChannel> readerWriterChannels = new HashMap<>();
|
||||
|
||||
private List<ICraftingPattern> patterns = new ArrayList<>();
|
||||
|
||||
private List<ICraftingTask> craftingTasks = new ArrayList<>();
|
||||
@@ -278,10 +284,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
if (craftingTasksChanged) {
|
||||
craftingMonitorUpdateRequested = true;
|
||||
}
|
||||
|
||||
if (!craftingTasks.isEmpty()) {
|
||||
markDirty();
|
||||
}
|
||||
|
||||
if (!craftingTasks.isEmpty() || !readerWriterChannels.isEmpty()) {
|
||||
markDirty();
|
||||
}
|
||||
|
||||
if (craftingMonitorUpdateRequested) {
|
||||
@@ -550,6 +556,11 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
RS.INSTANCE.network.sendTo(new MessageCraftingMonitorElements(getElements()), player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, IReaderWriterChannel> getReaderWriterChannels() {
|
||||
return readerWriterChannels;
|
||||
}
|
||||
|
||||
private List<ICraftingMonitorElement> getElements() {
|
||||
return craftingTasks.stream().flatMap(t -> t.getCraftingMonitorElements().stream()).collect(Collectors.toList());
|
||||
}
|
||||
@@ -797,6 +808,20 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
craftingTasksToRead.add(taskList.getCompoundTagAt(i));
|
||||
}
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_READER_WRITER_CHANNELS)) {
|
||||
NBTTagList readerWriterChannelsList = tag.getTagList(NBT_READER_WRITER_CHANNELS, Constants.NBT.TAG_COMPOUND);
|
||||
|
||||
for (int i = 0; i < readerWriterChannelsList.tagCount(); ++i) {
|
||||
NBTTagCompound channelTag = readerWriterChannelsList.getCompoundTagAt(i);
|
||||
|
||||
IReaderWriterChannel channel = API.instance().createReaderWriterChannel();
|
||||
|
||||
channel.readFromNBT(channelTag);
|
||||
|
||||
readerWriterChannels.put(channelTag.getString(NBT_READER_WRITER_NAME), channel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -807,13 +832,25 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
|
||||
redstoneMode.write(tag);
|
||||
|
||||
NBTTagList list = new NBTTagList();
|
||||
NBTTagList craftingTaskList = new NBTTagList();
|
||||
|
||||
for (ICraftingTask task : craftingTasks) {
|
||||
list.appendTag(task.writeToNBT(new NBTTagCompound()));
|
||||
craftingTaskList.appendTag(task.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
|
||||
tag.setTag(NBT_CRAFTING_TASKS, list);
|
||||
tag.setTag(NBT_CRAFTING_TASKS, craftingTaskList);
|
||||
|
||||
NBTTagList readerWriterChannelsList = new NBTTagList();
|
||||
|
||||
for (Map.Entry<String, IReaderWriterChannel> entry : readerWriterChannels.entrySet()) {
|
||||
NBTTagCompound channelTag = entry.getValue().writeToNBT(new NBTTagCompound());
|
||||
|
||||
channelTag.setString(NBT_READER_WRITER_NAME, entry.getKey());
|
||||
|
||||
readerWriterChannelsList.appendTag(channelTag);
|
||||
}
|
||||
|
||||
tag.setTag(NBT_READER_WRITER_CHANNELS, readerWriterChannelsList);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user