diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java b/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java index dda33b82e..1b1b9bf25 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java @@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftin import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreviewElementRegistry; import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskRegistry; import com.raoulvdberge.refinedstorage.api.network.INetworkMaster; +import com.raoulvdberge.refinedstorage.api.network.INetworkNodeProvider; import com.raoulvdberge.refinedstorage.api.network.INetworkNodeRegistry; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerRegistry; @@ -30,10 +31,15 @@ public interface IRSAPI { IComparer getComparer(); /** - * @param dimension the dimension - * @return the network node registry for the given dimension + * @return the network node factory */ - INetworkNodeRegistry getNetworkNodeRegistry(int dimension); + INetworkNodeRegistry getNetworkNodeRegistry(); + + /** + * @param dimension the dimension + * @return the network node provider for the given dimension + */ + INetworkNodeProvider getNetworkNodeProvider(int dimension); /** * @return the solderer registry diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/craftingmonitor/ICraftingMonitorElementRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/craftingmonitor/ICraftingMonitorElementRegistry.java index d7b623369..7a30de7e3 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/craftingmonitor/ICraftingMonitorElementRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/craftingmonitor/ICraftingMonitorElementRegistry.java @@ -24,5 +24,5 @@ public interface ICraftingMonitorElementRegistry { * @return the factory, or null if no factory was found */ @Nullable - Function getFactory(String id); + Function get(String id); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/preview/ICraftingPreviewElementRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/preview/ICraftingPreviewElementRegistry.java index 092847b80..67c63ebf9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/preview/ICraftingPreviewElementRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/preview/ICraftingPreviewElementRegistry.java @@ -24,5 +24,5 @@ public interface ICraftingPreviewElementRegistry { * @return the factory, or null if no factory was found */ @Nullable - Function getFactory(String id); + Function get(String id); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/registry/ICraftingTaskRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/registry/ICraftingTaskRegistry.java index fce282e5c..e5b37fb4c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/registry/ICraftingTaskRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/registry/ICraftingTaskRegistry.java @@ -14,7 +14,7 @@ public interface ICraftingTaskRegistry { * @param id the id of the factory * @param factory the factory */ - void addFactory(String id, ICraftingTaskFactory factory); + void add(String id, ICraftingTaskFactory factory); /** * Returns the crafting task factory by factory id. @@ -23,5 +23,5 @@ public interface ICraftingTaskRegistry { * @return the factory */ @Nullable - ICraftingTaskFactory getFactory(String id); + ICraftingTaskFactory get(String id); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java index 7b47def6c..6ccb0a9b9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java @@ -157,7 +157,7 @@ public interface INetworkMaster { * @return the crafting task */ default ICraftingTask createCraftingTask(@Nullable ItemStack stack, ICraftingPattern pattern, int quantity) { - return API.instance().getCraftingTaskRegistry().getFactory(pattern.getId()).create(getNetworkWorld(), this, stack, pattern, quantity, null); + return API.instance().getCraftingTaskRegistry().get(pattern.getId()).create(getNetworkWorld(), this, stack, pattern, quantity, null); } /** diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNode.java index 90fe5245c..f26d51aff 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNode.java @@ -56,4 +56,6 @@ public interface INetworkNode { BlockPos getPos(); void markDirty(); + + String getId(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNodeProvider.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNodeProvider.java new file mode 100755 index 000000000..cdfc219d1 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNodeProvider.java @@ -0,0 +1,19 @@ +package com.raoulvdberge.refinedstorage.api.network; + +import net.minecraft.util.math.BlockPos; + +import javax.annotation.Nullable; +import java.util.Collection; + +public interface INetworkNodeProvider { + @Nullable + INetworkNode getNode(BlockPos pos); + + void removeNode(BlockPos pos); + + void setNode(BlockPos pos, INetworkNode node); + + Collection all(); + + void clear(); +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNodeRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNodeRegistry.java index ff8a5549c..24b6e057b 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNodeRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkNodeRegistry.java @@ -1,14 +1,13 @@ package com.raoulvdberge.refinedstorage.api.network; -import net.minecraft.util.math.BlockPos; +import net.minecraft.nbt.NBTTagCompound; import javax.annotation.Nullable; +import java.util.function.Function; public interface INetworkNodeRegistry { + void add(String id, Function factory); + @Nullable - INetworkNode getNode(BlockPos pos); - - void removeNode(BlockPos pos); - - void setNode(BlockPos pos, INetworkNode node); + Function get(String id); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterHandlerRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterHandlerRegistry.java index 815dee294..b8bb30493 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterHandlerRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterHandlerRegistry.java @@ -22,10 +22,10 @@ public interface IReaderWriterHandlerRegistry { * @return the factory, or null if no factory was found */ @Nullable - IReaderWriterHandlerFactory getFactory(String id); + IReaderWriterHandlerFactory get(String id); /** * @return a list of reader writer handler factories */ - Collection getFactories(); + Collection all(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java index 8de620354..2fa42999f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java @@ -6,10 +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.INetworkMaster; -import com.raoulvdberge.refinedstorage.api.network.INetworkNode; -import com.raoulvdberge.refinedstorage.api.network.INetworkNodeProxy; -import com.raoulvdberge.refinedstorage.api.network.INetworkNodeRegistry; +import com.raoulvdberge.refinedstorage.api.network.*; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerRegistry; import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRegistry; @@ -19,6 +16,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.NetworkNodeProvider; import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeRegistry; import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterChannel; import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerRegistry; @@ -49,8 +47,9 @@ public class API implements IRSAPI { private static final IRSAPI INSTANCE = new API(); private IComparer comparer = new Comparer(); - private Map networkNodeRegistryServer = new HashMap<>(); - private Map networkNodeRegistryClient = new HashMap<>(); + private INetworkNodeRegistry networkNodeRegistry = new NetworkNodeRegistry(); + private Map networkNodeProviderServer = new HashMap<>(); + private Map networkNodeProviderClient = new HashMap<>(); private ISoldererRegistry soldererRegistry = new SoldererRegistry(); private ICraftingTaskRegistry craftingTaskRegistry = new CraftingTaskRegistry(); private ICraftingMonitorElementRegistry craftingMonitorElementRegistry = new CraftingMonitorElementRegistry(); @@ -88,10 +87,15 @@ public class API implements IRSAPI { } @Override - public INetworkNodeRegistry getNetworkNodeRegistry(int dimension) { - Map registry = FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT ? networkNodeRegistryClient : networkNodeRegistryServer; + public INetworkNodeRegistry getNetworkNodeRegistry() { + return networkNodeRegistry; + } - return registry.computeIfAbsent(dimension, r -> new NetworkNodeRegistry()); + @Override + public INetworkNodeProvider getNetworkNodeProvider(int dimension) { + Map provider = FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT ? networkNodeProviderClient : networkNodeProviderServer; + + return provider.computeIfAbsent(dimension, r -> new NetworkNodeProvider()); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/CraftingMonitorElementRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/CraftingMonitorElementRegistry.java index 62289d57a..7182632d2 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/CraftingMonitorElementRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/CraftingMonitorElementRegistry.java @@ -19,7 +19,7 @@ public class CraftingMonitorElementRegistry implements ICraftingMonitorElementRe @Nullable @Override - public Function getFactory(String id) { + public Function get(String id) { return registry.get(id); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/preview/CraftingPreviewElementRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/preview/CraftingPreviewElementRegistry.java index fe547247b..c668d236f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/preview/CraftingPreviewElementRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/preview/CraftingPreviewElementRegistry.java @@ -19,7 +19,7 @@ public class CraftingPreviewElementRegistry implements ICraftingPreviewElementRe @Nullable @Override - public Function getFactory(String id) { + public Function get(String id) { return registry.get(id); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/registry/CraftingTaskFactory.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/registry/CraftingTaskFactory.java index 3ff43ff7e..71891ccd8 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/registry/CraftingTaskFactory.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/registry/CraftingTaskFactory.java @@ -44,7 +44,6 @@ public class CraftingTaskFactory implements ICraftingTaskFactory { } } - NBTTagList toInsertList = tag.getTagList(CraftingTask.NBT_TO_INSERT_ITEMS, Constants.NBT.TAG_COMPOUND); Deque toInsert = new ArrayDeque<>(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/registry/CraftingTaskRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/registry/CraftingTaskRegistry.java index efb47feaa..b4f1828fb 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/registry/CraftingTaskRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/registry/CraftingTaskRegistry.java @@ -11,13 +11,13 @@ public class CraftingTaskRegistry implements ICraftingTaskRegistry { private Map registry = new HashMap<>(); @Override - public void addFactory(String id, ICraftingTaskFactory factory) { + public void add(String id, ICraftingTaskFactory factory) { registry.put(id, factory); } @Override @Nullable - public ICraftingTaskFactory getFactory(String id) { + public ICraftingTaskFactory get(String id) { return registry.get(id); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkListener.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeListener.java similarity index 78% rename from src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkListener.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeListener.java index 980e6200e..b3909f6d7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkListener.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeListener.java @@ -4,13 +4,16 @@ import com.raoulvdberge.refinedstorage.RSUtils; import com.raoulvdberge.refinedstorage.api.network.INetworkNode; import com.raoulvdberge.refinedstorage.api.network.INetworkNodeProxy; import com.raoulvdberge.refinedstorage.api.network.security.Permission; +import com.raoulvdberge.refinedstorage.apiimpl.API; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.WorldSavedDataNetworkNode; import com.raoulvdberge.refinedstorage.proxy.CapabilityNetworkNodeProxy; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -public class NetworkListener { +public class NetworkNodeListener { @SubscribeEvent public void onBlockPlace(BlockEvent.PlaceEvent e) { if (!e.getWorld().isRemote) { @@ -52,4 +55,19 @@ public class NetworkListener { } } } + + @SubscribeEvent + public void onWorldSave(WorldEvent.Save e) { + WorldSavedDataNetworkNode.get(e.getWorld()); + } + + @SubscribeEvent + public void onWorldLoad(WorldEvent.Load e) { + WorldSavedDataNetworkNode.get(e.getWorld()); + } + + @SubscribeEvent + public void onWorldUnload(WorldEvent.Unload e) { + API.instance().getNetworkNodeProvider(e.getWorld().provider.getDimension()).clear(); + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeProvider.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeProvider.java new file mode 100755 index 000000000..5ac5549f5 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeProvider.java @@ -0,0 +1,40 @@ +package com.raoulvdberge.refinedstorage.apiimpl.network; + +import com.raoulvdberge.refinedstorage.api.network.INetworkNode; +import com.raoulvdberge.refinedstorage.api.network.INetworkNodeProvider; +import net.minecraft.util.math.BlockPos; + +import javax.annotation.Nullable; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +public class NetworkNodeProvider implements INetworkNodeProvider { + private Map nodes = new HashMap<>(); + + @Override + @Nullable + public INetworkNode getNode(BlockPos pos) { + return nodes.get(pos); + } + + @Override + public void removeNode(BlockPos pos) { + nodes.remove(pos); + } + + @Override + public void setNode(BlockPos pos, INetworkNode node) { + nodes.put(pos, node); + } + + @Override + public Collection all() { + return nodes.values(); + } + + @Override + public void clear() { + nodes.clear(); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeRegistry.java index ee52163c5..a6afcf785 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeRegistry.java @@ -2,28 +2,24 @@ package com.raoulvdberge.refinedstorage.apiimpl.network; import com.raoulvdberge.refinedstorage.api.network.INetworkNode; import com.raoulvdberge.refinedstorage.api.network.INetworkNodeRegistry; -import net.minecraft.util.math.BlockPos; +import net.minecraft.nbt.NBTTagCompound; import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; +import java.util.function.Function; public class NetworkNodeRegistry implements INetworkNodeRegistry { - private Map nodes = new HashMap<>(); + private Map> factories = new HashMap<>(); + + @Override + public void add(String id, Function factory) { + factories.put(id, factory); + } @Override @Nullable - public INetworkNode getNode(BlockPos pos) { - return nodes.get(pos); - } - - @Override - public void removeNode(BlockPos pos) { - nodes.remove(pos); - } - - @Override - public void setNode(BlockPos pos, INetworkNode node) { - nodes.put(pos, node); + public Function get(String id) { + return factories.get(id); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java index bae3d6e02..3558373a2 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNode.java @@ -30,6 +30,9 @@ public abstract class NetworkNode implements INetworkNode, INetworkNeighborhoodA private boolean active; + public NetworkNode() { + } + public NetworkNode(INetworkNodeHolder holder) { this.holder = holder; } @@ -71,7 +74,9 @@ public abstract class NetworkNode implements INetworkNode, INetworkNeighborhoodA @Override public void markDirty() { - // @todo + if (holder.world() != null) { + WorldSavedDataNetworkNode.get(holder.world()).markDirty(); + } } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeBasic.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeBasic.java deleted file mode 100755 index 14d49ebf9..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeBasic.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.raoulvdberge.refinedstorage.apiimpl.network.node; - -import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder; - -public class NetworkNodeBasic extends NetworkNode { - private int energyUsage; - private boolean connectivityState; - - public NetworkNodeBasic(INetworkNodeHolder holder, int energyUsage, boolean connectivityState) { - super(holder); - - this.energyUsage = energyUsage; - this.connectivityState = connectivityState; - } - - @Override - public int getEnergyUsage() { - return energyUsage; - } - - @Override - public boolean hasConnectivityState() { - return connectivityState; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java new file mode 100755 index 000000000..0b9c08ebe --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java @@ -0,0 +1,17 @@ +package com.raoulvdberge.refinedstorage.apiimpl.network.node; + +import com.raoulvdberge.refinedstorage.RS; + +public class NetworkNodeCable extends NetworkNode { + public static final String ID = "cable"; + + @Override + public int getEnergyUsage() { + return RS.INSTANCE.config.cableUsage; + } + + @Override + public String getId() { + return ID; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java index 21b3e519d..1dbabf94d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java @@ -41,6 +41,8 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.items.IItemHandler; public class NetworkNodeConstructor extends NetworkNode implements IComparable, IType { + public static final String ID = "constructor"; + private static final String NBT_COMPARE = "Compare"; private static final String NBT_TYPE = "Type"; private static final String NBT_DROP = "Drop"; @@ -236,6 +238,11 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable, RSUtils.readItems(upgrades, 1, tag); } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java index 483915844..90d048d8c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java @@ -22,6 +22,8 @@ import java.util.ArrayList; import java.util.List; public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternContainer { + public static final String ID = "crafter"; + private static final String NBT_TRIGGERED_AUTOCRAFTING = "TriggeredAutocrafting"; private ItemHandlerBasic patterns = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this), s -> { @@ -124,6 +126,11 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC RSUtils.readItems(upgrades, 1, tag); } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCraftingMonitor.java index 77b550c48..086be6c40 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCraftingMonitor.java @@ -12,6 +12,8 @@ import net.minecraft.util.math.BlockPos; import javax.annotation.Nullable; public class NetworkNodeCraftingMonitor extends NetworkNode implements ICraftingMonitor { + public static final String ID = "crafting_monitor"; + public NetworkNodeCraftingMonitor(INetworkNodeHolder holder) { super(holder); } @@ -21,6 +23,11 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting return RS.INSTANCE.config.craftingMonitorUsage; } + @Override + public String getId() { + return ID; + } + @Override public boolean hasConnectivityState() { return true; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java index 264fc2e94..fda5b5910 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java @@ -41,6 +41,8 @@ import java.util.Collections; import java.util.List; public class NetworkNodeDestructor extends NetworkNode implements IComparable, IFilterable, IType { + public static final String ID = "destructor"; + private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; private static final String NBT_TYPE = "Type"; @@ -186,6 +188,11 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I RSUtils.readItems(upgrades, 1, tag); } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDetector.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDetector.java index d0ad9b4b8..3f894f04a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDetector.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDetector.java @@ -21,6 +21,8 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.items.IItemHandler; public class NetworkNodeDetector extends NetworkNode implements IComparable, IType { + public static final String ID = "detector"; + private static final int SPEED = 5; public static final int MODE_UNDER = 0; @@ -108,6 +110,11 @@ public class NetworkNodeDetector extends NetworkNode implements IComparable, ITy } } + @Override + public String getId() { + return ID; + } + @Override public void onConnectedStateChange(INetworkMaster network, boolean state) { super.onConnectedStateChange(network, state); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDiskDrive.java index e03a6c00e..74e5a0e34 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDiskDrive.java @@ -33,6 +33,8 @@ import javax.annotation.Nonnull; import java.util.List; public class NetworkNodeDiskDrive extends NetworkNode implements IStorageGui, IStorageProvider, IComparable, IFilterable, IPrioritizable, IType, IExcessVoidable, IAccessType { + public static final String ID = "disk_drive"; + public class StorageItem extends StorageItemNBT { private int lastState; @@ -251,6 +253,11 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IStorageGui, IS RSUtils.readItems(disks, 0, tag); } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDiskManipulator.java index fe278add5..efc32cdfb 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDiskManipulator.java @@ -27,6 +27,8 @@ import javax.annotation.Nonnull; import java.util.ArrayList; public class NetworkNodeDiskManipulator extends NetworkNode implements IComparable, IFilterable, IType { + public static final String ID = "disk_manipulator"; + public static final int IO_MODE_INSERT = 0; public static final int IO_MODE_EXTRACT = 1; @@ -506,6 +508,11 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab RSUtils.readItems(outputDisks, 5, tag); } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java index a2000fc8d..dad8fdde1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java @@ -23,6 +23,8 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; public class NetworkNodeExporter extends NetworkNode implements IComparable, IType { + public static final String ID = "exporter"; + private static final String NBT_COMPARE = "Compare"; private static final String NBT_TYPE = "Type"; private static final String NBT_REGULATOR = "Regulator"; @@ -166,6 +168,11 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy RSUtils.readItems(upgrades, 1, tag); } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java index 5095aaf53..2b875d608 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidInterface.java @@ -19,6 +19,8 @@ import net.minecraftforge.fluids.FluidTank; import org.apache.commons.lang3.tuple.Pair; public class NetworkNodeFluidInterface extends NetworkNode implements IComparable { + public static final String ID = "fluid_interface"; + public static final int TANK_CAPACITY = 16000; private static final String NBT_COMPARE = "Compare"; @@ -170,6 +172,11 @@ public class NetworkNodeFluidInterface extends NetworkNode implements IComparabl } } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound writeConfiguration(NBTTagCompound tag) { super.writeConfiguration(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidStorage.java index 27bd7003d..7e1b50840 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidStorage.java @@ -25,6 +25,8 @@ import net.minecraftforge.fluids.FluidStack; import java.util.List; public class NetworkNodeFluidStorage extends NetworkNode implements IStorageGui, IStorageProvider, IComparable, IFilterable, IPrioritizable, IExcessVoidable, IAccessType { + public static final String ID = "fluid_storage"; + class StorageFluid extends StorageFluidNBT { public StorageFluid() { super(NetworkNodeFluidStorage.this.getStorageTag(), NetworkNodeFluidStorage.this.getCapacity(), NetworkNodeFluidStorage.this); @@ -132,6 +134,11 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IStorageGui, } } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java index 431b4b53b..72a703142 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java @@ -41,6 +41,8 @@ import java.util.ArrayList; import java.util.List; public class NetworkNodeGrid extends NetworkNode implements IGrid { + public static final String ID = "grid"; + public static final String NBT_VIEW_TYPE = "ViewType"; public static final String NBT_SORTING_DIRECTION = "SortingDirection"; public static final String NBT_SORTING_TYPE = "SortingType"; @@ -456,6 +458,11 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { } } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java index fb21c853c..234e392d2 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java @@ -23,6 +23,8 @@ import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; public class NetworkNodeImporter extends NetworkNode implements IComparable, IFilterable, IType { + public static final String ID = "importer"; + private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; private static final String NBT_TYPE = "Type"; @@ -130,6 +132,11 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi RSUtils.readItems(upgrades, 1, tag); } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java index 6d9219b6d..53cae14f1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java @@ -16,6 +16,8 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; public class NetworkNodeInterface extends NetworkNode implements IComparable { + public static final String ID = "interface"; + private static final String NBT_COMPARE = "Compare"; private ItemHandlerBasic importItems = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this)); @@ -125,6 +127,11 @@ public class NetworkNodeInterface extends NetworkNode implements IComparable { RSUtils.readItems(upgrades, 3, tag); } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeNetworkReceiver.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeNetworkReceiver.java new file mode 100755 index 000000000..13cbe4084 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeNetworkReceiver.java @@ -0,0 +1,22 @@ +package com.raoulvdberge.refinedstorage.apiimpl.network.node; + +import com.raoulvdberge.refinedstorage.RS; + +public class NetworkNodeNetworkReceiver extends NetworkNode { + public static final String ID = "network_receiver"; + + @Override + public int getEnergyUsage() { + return RS.INSTANCE.config.networkReceiverUsage; + } + + @Override + public boolean hasConnectivityState() { + return true; + } + + @Override + public String getId() { + return ID; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeNetworkTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeNetworkTransmitter.java index 9d7ac7128..6866bc84e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeNetworkTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeNetworkTransmitter.java @@ -21,6 +21,8 @@ import net.minecraftforge.items.wrapper.CombinedInvWrapper; import javax.annotation.Nullable; public class NetworkNodeNetworkTransmitter extends NetworkNode { + public static final String ID = "network_transmitter"; + private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(1, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_INTERDIMENSIONAL) { @Override protected void onContentsChanged(int slot) { @@ -83,6 +85,11 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode { RSUtils.readItems(upgrades, 1, tag); } + @Override + public String getId() { + return ID; + } + @Override public int getEnergyUsage() { return Math.min( diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java index d9850b598..94af5ea05 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java @@ -10,6 +10,8 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; public class NetworkNodeReader extends NetworkNode implements IReader { + public static final String ID = "reader"; + private static final String NBT_CHANNEL = "Channel"; private String channel = ""; @@ -62,6 +64,11 @@ public class NetworkNodeReader extends NetworkNode implements IReader { } } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeRelay.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeRelay.java index b6f9740ab..cc9347a75 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeRelay.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeRelay.java @@ -8,6 +8,8 @@ import net.minecraft.util.EnumFacing; import javax.annotation.Nullable; public class NetworkNodeRelay extends NetworkNode { + public static final String ID = "relay"; + public NetworkNodeRelay(INetworkNodeHolder holder) { super(holder); @@ -21,6 +23,11 @@ public class NetworkNodeRelay extends NetworkNode { return getRedstoneMode() == RedstoneMode.IGNORE ? 0 : RS.INSTANCE.config.relayUsage; } + @Override + public String getId() { + return ID; + } + @Override public boolean canConduct(@Nullable EnumFacing direction) { return canUpdate(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java index 0f9079690..eb23c3a51 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java @@ -24,6 +24,8 @@ import java.util.List; import java.util.UUID; public class NetworkNodeSecurityManager extends NetworkNode implements ISecurityCardContainer { + public static final String ID = "security_manager"; + private static final String NBT_OWNER = "Owner"; private List actualCards = new ArrayList<>(); @@ -120,6 +122,11 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity RSUtils.readItems(editCard, 1, tag); } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSolderer.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSolderer.java index 4456de4eb..843ea9b39 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSolderer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSolderer.java @@ -18,6 +18,8 @@ import net.minecraftforge.items.wrapper.CombinedInvWrapper; import javax.annotation.Nonnull; public class NetworkNodeSolderer extends NetworkNode { + public static final String ID = "solderer"; + private static final String NBT_WORKING = "Working"; private static final String NBT_PROGRESS = "Progress"; @@ -142,6 +144,11 @@ public class NetworkNodeSolderer extends NetworkNode { } } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorage.java index 709731af4..064e79ec1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorage.java @@ -27,6 +27,8 @@ import javax.annotation.Nonnull; import java.util.List; public class NetworkNodeStorage extends NetworkNode implements IStorageGui, IStorageProvider, IComparable, IFilterable, IPrioritizable, IExcessVoidable, IAccessType { + public static final String ID = "storage"; + class StorageItem extends StorageItemNBT { public StorageItem() { super(NetworkNodeStorage.this.getStorageTag(), NetworkNodeStorage.this.getCapacity(), NetworkNodeStorage.this); @@ -134,6 +136,11 @@ public class NetworkNodeStorage extends NetworkNode implements IStorageGui, ISto } } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWirelessTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWirelessTransmitter.java index df7ee0ea3..61c88ed0d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWirelessTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWirelessTransmitter.java @@ -16,6 +16,8 @@ import net.minecraftforge.items.IItemHandler; import javax.annotation.Nullable; public class NetworkNodeWirelessTransmitter extends NetworkNode implements IWirelessTransmitter { + public static final String ID = "wireless_transmitter"; + private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_RANGE); public NetworkNodeWirelessTransmitter(INetworkNodeHolder holder) { @@ -34,6 +36,11 @@ public class NetworkNodeWirelessTransmitter extends NetworkNode implements IWire RSUtils.readItems(upgrades, 0, tag); } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java index c8f2d5d22..661789ce9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java @@ -14,6 +14,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; public class NetworkNodeWriter extends NetworkNode implements IWriter { + public static final String ID = "writer"; + private static final String NBT_CHANNEL = "Channel"; private String channel = ""; @@ -100,6 +102,11 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter { } } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/WorldSavedDataNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/WorldSavedDataNetworkNode.java new file mode 100755 index 000000000..aa446df00 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/WorldSavedDataNetworkNode.java @@ -0,0 +1,92 @@ +package com.raoulvdberge.refinedstorage.apiimpl.network.node; + +import com.raoulvdberge.refinedstorage.api.network.INetworkNode; +import com.raoulvdberge.refinedstorage.apiimpl.API; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.WorldSavedData; +import net.minecraft.world.storage.MapStorage; +import net.minecraftforge.common.util.Constants; + +import java.util.function.Function; + +public class WorldSavedDataNetworkNode extends WorldSavedData { + private static final String NAME = "refinedstorage_nodes"; + + private static final String NBT_NODES = "Nodes"; + private static final String NBT_NODE_ID = "Id"; + private static final String NBT_NODE_DATA = "Data"; + private static final String NBT_NODE_POS = "Pos"; + private static final String NBT_DIMENSION = "Dimension"; + + private int dimension; + + public WorldSavedDataNetworkNode(int dimension) { + super(NAME); + + this.dimension = dimension; + } + + public WorldSavedDataNetworkNode(String s) { + super(s); + } + + @Override + public void readFromNBT(NBTTagCompound tag) { + if (tag.hasKey(NBT_NODES) && tag.hasKey(NBT_DIMENSION)) { + int dimension = tag.getInteger(NBT_DIMENSION); + + NBTTagList list = tag.getTagList(NBT_NODES, Constants.NBT.TAG_COMPOUND); + + for (int i = 0; i < list.tagCount(); ++i) { + NBTTagCompound nodeTag = list.getCompoundTagAt(i); + + String id = nodeTag.getString(NBT_NODE_ID); + NBTTagCompound data = nodeTag.getCompoundTag(NBT_NODE_DATA); + BlockPos pos = BlockPos.fromLong(nodeTag.getLong(NBT_NODE_POS)); + + Function factory = API.instance().getNetworkNodeRegistry().get(id); + + if (factory != null) { + API.instance().getNetworkNodeProvider(dimension).setNode(pos, factory.apply(data)); + } + } + } + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound tag) { + NBTTagList list = new NBTTagList(); + + for (INetworkNode node : API.instance().getNetworkNodeProvider(dimension).all()) { + NBTTagCompound nodeTag = new NBTTagCompound(); + + nodeTag.setString(NBT_NODE_ID, node.getId()); + nodeTag.setLong(NBT_NODE_POS, node.getPos().toLong()); + nodeTag.setTag(NBT_NODE_DATA, node.write(new NBTTagCompound())); + + list.appendTag(nodeTag); + } + + tag.setTag(NBT_NODES, list); + + tag.setInteger(NBT_DIMENSION, dimension); + + return tag; + } + + public static WorldSavedDataNetworkNode get(World world) { + MapStorage storage = world.getPerWorldStorage(); + WorldSavedDataNetworkNode instance = (WorldSavedDataNetworkNode) storage.getOrLoadData(WorldSavedDataNetworkNode.class, NAME); + + if (instance == null) { + instance = new WorldSavedDataNetworkNode(world.provider.getDimension()); + + storage.setData(NAME, instance); + } + + return instance; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java index 7d1d934a6..9aaf6d595 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java @@ -32,6 +32,8 @@ import java.util.ArrayList; import java.util.List; public class NetworkNodeExternalStorage extends NetworkNode implements IStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable, IType, IAccessType { + public static final String ID = "external_storage"; + private static final String NBT_PRIORITY = "Priority"; private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; @@ -98,6 +100,11 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP } } + @Override + public String getId() { + return ID; + } + @Override public NBTTagCompound writeConfiguration(NBTTagCompound tag) { super.writeConfiguration(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterChannel.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterChannel.java index fb4def35e..fd09a30db 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterChannel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterChannel.java @@ -20,7 +20,7 @@ public class ReaderWriterChannel implements IReaderWriterChannel { public ReaderWriterChannel(String name, INetworkMaster network) { this.name = name; this.network = network; - this.handlers.addAll(API.instance().getReaderWriterHandlerRegistry().getFactories().stream().map(f -> f.create(null)).collect(Collectors.toList())); + this.handlers.addAll(API.instance().getReaderWriterHandlerRegistry().all().stream().map(f -> f.create(null)).collect(Collectors.toList())); } @Override @@ -59,7 +59,7 @@ public class ReaderWriterChannel implements IReaderWriterChannel { String id = String.format(NBT_HANDLER, handler.getId()); if (tag.hasKey(id)) { - IReaderWriterHandlerFactory factory = API.instance().getReaderWriterHandlerRegistry().getFactory(id); + IReaderWriterHandlerFactory factory = API.instance().getReaderWriterHandlerRegistry().get(id); if (factory != null) { handlers.add(factory.create(tag.getCompoundTag(id))); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerRegistry.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerRegistry.java index 7486d2ccc..4e2c54949 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerRegistry.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerRegistry.java @@ -18,12 +18,12 @@ public class ReaderWriterHandlerRegistry implements IReaderWriterHandlerRegistry @Nullable @Override - public IReaderWriterHandlerFactory getFactory(String id) { + public IReaderWriterHandlerFactory get(String id) { return factories.get(id); } @Override - public Collection getFactories() { + public Collection all() { return factories.values(); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCraftingMonitorElements.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCraftingMonitorElements.java index 82b5b8bc0..e6559e8f4 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCraftingMonitorElements.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageCraftingMonitorElements.java @@ -28,7 +28,7 @@ public class MessageCraftingMonitorElements implements IMessage, IMessageHandler int size = buf.readInt(); for (int i = 0; i < size; ++i) { - Function factory = API.instance().getCraftingMonitorElementRegistry().getFactory(ByteBufUtils.readUTF8String(buf)); + Function factory = API.instance().getCraftingMonitorElementRegistry().get(ByteBufUtils.readUTF8String(buf)); if (factory != null) { elements.add(factory.apply(buf)); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java index bd08a0765..e064c5f4c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java @@ -37,7 +37,7 @@ public class MessageGridCraftingPreviewResponse implements IMessage, IMessageHan int size = buf.readInt(); for (int i = 0; i < size; i++) { - this.stacks.add(API.instance().getCraftingPreviewElementRegistry().getFactory(ByteBufUtils.readUTF8String(buf)).apply(buf)); + this.stacks.add(API.instance().getCraftingPreviewElementRegistry().get(ByteBufUtils.readUTF8String(buf)).apply(buf)); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index 64394920e..a10354737 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -4,12 +4,13 @@ import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.RSUtils; +import com.raoulvdberge.refinedstorage.api.network.INetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.API; 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.NetworkListener; +import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeListener; import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerFluids; import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerItems; import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerRedstone; @@ -62,7 +63,7 @@ public class ProxyCommon { API.deliver(e.getAsmData()); - API.instance().getCraftingTaskRegistry().addFactory(CraftingTaskFactory.ID, new CraftingTaskFactory()); + API.instance().getCraftingTaskRegistry().add(CraftingTaskFactory.ID, new CraftingTaskFactory()); API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementItemRender.ID, buf -> new CraftingMonitorElementItemRender(buf.readInt(), ByteBufUtils.readItemStack(buf), buf.readInt(), buf.readInt())); API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementFluidRender.ID, buf -> new CraftingMonitorElementFluidRender(buf.readInt(), RSUtils.readFluidStack(buf).getRight(), buf.readInt())); @@ -71,13 +72,13 @@ public class ProxyCommon { String id = ByteBufUtils.readUTF8String(buf); String tooltip = ByteBufUtils.readUTF8String(buf); - return new CraftingMonitorElementError(API.instance().getCraftingMonitorElementRegistry().getFactory(id).apply(buf), tooltip); + return new CraftingMonitorElementError(API.instance().getCraftingMonitorElementRegistry().get(id).apply(buf), tooltip); }); API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementInfo.ID, buf -> { String id = ByteBufUtils.readUTF8String(buf); String tooltip = ByteBufUtils.readUTF8String(buf); - return new CraftingMonitorElementInfo(API.instance().getCraftingMonitorElementRegistry().getFactory(id).apply(buf), tooltip); + return new CraftingMonitorElementInfo(API.instance().getCraftingMonitorElementRegistry().get(id).apply(buf), tooltip); }); API.instance().getCraftingPreviewElementRegistry().add(CraftingPreviewElementItemStack.ID, CraftingPreviewElementItemStack::fromByteBuf); @@ -125,7 +126,7 @@ public class ProxyCommon { NetworkRegistry.INSTANCE.registerGuiHandler(RS.INSTANCE, new GuiHandler()); MinecraftForge.EVENT_BUS.register(new ContainerListener()); - MinecraftForge.EVENT_BUS.register(new NetworkListener()); + MinecraftForge.EVENT_BUS.register(new NetworkNodeListener()); registerTile(TileController.class, "controller"); registerTile(TileGrid.class, "grid"); @@ -228,338 +229,338 @@ public class ProxyCommon { // Quartz Enriched Iron GameRegistry.addRecipe(new ItemStack(RSItems.QUARTZ_ENRICHED_IRON, 4), - "II", - "IQ", - 'I', new ItemStack(Items.IRON_INGOT), - 'Q', new ItemStack(Items.QUARTZ) + "II", + "IQ", + 'I', new ItemStack(Items.IRON_INGOT), + 'Q', new ItemStack(Items.QUARTZ) ); // Machine Casing GameRegistry.addRecipe(new ItemStack(RSBlocks.MACHINE_CASING), - "EEE", - "E E", - "EEE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) + "EEE", + "E E", + "EEE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) ); // Construction Core GameRegistry.addShapelessRecipe(new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), - new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC), - new ItemStack(Items.GLOWSTONE_DUST) + new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC), + new ItemStack(Items.GLOWSTONE_DUST) ); // Destruction Core GameRegistry.addShapelessRecipe(new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), - new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC), - new ItemStack(Items.QUARTZ) + new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC), + new ItemStack(Items.QUARTZ) ); // Relay GameRegistry.addShapelessRecipe(new ItemStack(RSBlocks.RELAY), - new ItemStack(RSBlocks.MACHINE_CASING), - new ItemStack(RSBlocks.CABLE), - new ItemStack(Blocks.REDSTONE_TORCH) + new ItemStack(RSBlocks.MACHINE_CASING), + new ItemStack(RSBlocks.CABLE), + new ItemStack(Blocks.REDSTONE_TORCH) ); // Controller GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSBlocks.CONTROLLER, 1, EnumControllerType.NORMAL.getId()), - "EDE", - "SMS", - "ESE", - 'D', new ItemStack(Items.DIAMOND), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'M', new ItemStack(RSBlocks.MACHINE_CASING), - 'S', "itemSilicon" + "EDE", + "SMS", + "ESE", + 'D', new ItemStack(Items.DIAMOND), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'M', new ItemStack(RSBlocks.MACHINE_CASING), + 'S', "itemSilicon" )); // Solderer GameRegistry.addRecipe(new ItemStack(RSBlocks.SOLDERER), - "ESE", - "E E", - "ESE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'S', new ItemStack(Blocks.STICKY_PISTON) + "ESE", + "E E", + "ESE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'S', new ItemStack(Blocks.STICKY_PISTON) ); // Disk Drive API.instance().getSoldererRegistry().addRecipe(API.instance().getSoldererRegistry().createSimpleRecipe( - new ItemStack(RSBlocks.DISK_DRIVE), - 500, - new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), - new ItemStack(RSBlocks.MACHINE_CASING), - new ItemStack(Blocks.CHEST) + new ItemStack(RSBlocks.DISK_DRIVE), + 500, + new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), + new ItemStack(RSBlocks.MACHINE_CASING), + new ItemStack(Blocks.CHEST) )); // Cable GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSBlocks.CABLE, 12), - "EEE", - "GRG", - "EEE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'G', "blockGlass", - 'R', new ItemStack(Items.REDSTONE) + "EEE", + "GRG", + "EEE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'G', "blockGlass", + 'R', new ItemStack(Items.REDSTONE) )); // Wireless Transmitter GameRegistry.addRecipe(new ItemStack(RSBlocks.WIRELESS_TRANSMITTER), - "EPE", - "EME", - "EAE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), - 'P', new ItemStack(Items.ENDER_PEARL), - 'M', new ItemStack(RSBlocks.MACHINE_CASING) + "EPE", + "EME", + "EAE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), + 'P', new ItemStack(Items.ENDER_PEARL), + 'M', new ItemStack(RSBlocks.MACHINE_CASING) ); // Grid GameRegistry.addRecipe(new ItemStack(RSBlocks.GRID, 1, EnumGridType.NORMAL.getId()), - "ECE", - "PMP", - "EDE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED), - 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), - 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), - 'M', new ItemStack(RSBlocks.MACHINE_CASING) + "ECE", + "PMP", + "EDE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED), + 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), + 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), + 'M', new ItemStack(RSBlocks.MACHINE_CASING) ); // Crafting Grid API.instance().getSoldererRegistry().addRecipe(API.instance().getSoldererRegistry().createSimpleRecipe( - new ItemStack(RSBlocks.GRID, 1, EnumGridType.CRAFTING.getId()), - 500, - new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), - new ItemStack(RSBlocks.GRID, 1, EnumGridType.NORMAL.getId()), - new ItemStack(Blocks.CRAFTING_TABLE) + new ItemStack(RSBlocks.GRID, 1, EnumGridType.CRAFTING.getId()), + 500, + new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), + new ItemStack(RSBlocks.GRID, 1, EnumGridType.NORMAL.getId()), + new ItemStack(Blocks.CRAFTING_TABLE) )); // Pattern Grid API.instance().getSoldererRegistry().addRecipe(API.instance().getSoldererRegistry().createSimpleRecipe( - new ItemStack(RSBlocks.GRID, 1, EnumGridType.PATTERN.getId()), - 500, - new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), - new ItemStack(RSBlocks.GRID, 1, EnumGridType.NORMAL.getId()), - new ItemStack(RSItems.PATTERN) + new ItemStack(RSBlocks.GRID, 1, EnumGridType.PATTERN.getId()), + 500, + new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), + new ItemStack(RSBlocks.GRID, 1, EnumGridType.NORMAL.getId()), + new ItemStack(RSItems.PATTERN) )); // Fluid Grid API.instance().getSoldererRegistry().addRecipe(API.instance().getSoldererRegistry().createSimpleRecipe( - new ItemStack(RSBlocks.GRID, 1, EnumGridType.FLUID.getId()), - 500, - new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), - new ItemStack(RSBlocks.GRID, 1, EnumGridType.NORMAL.getId()), - new ItemStack(Items.BUCKET) + new ItemStack(RSBlocks.GRID, 1, EnumGridType.FLUID.getId()), + 500, + new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), + new ItemStack(RSBlocks.GRID, 1, EnumGridType.NORMAL.getId()), + new ItemStack(Items.BUCKET) )); // Wireless Grid GameRegistry.addRecipe(new ItemStack(RSItems.WIRELESS_GRID, 1, ItemWirelessGrid.TYPE_NORMAL), - "EPE", - "EGE", - "EAE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(Items.ENDER_PEARL), - 'G', new ItemStack(RSBlocks.GRID, 1, EnumGridType.NORMAL.getId()), - 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) + "EPE", + "EGE", + "EAE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(Items.ENDER_PEARL), + 'G', new ItemStack(RSBlocks.GRID, 1, EnumGridType.NORMAL.getId()), + 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) ); // Wireless Fluid Grid GameRegistry.addRecipe(new ItemStack(RSItems.WIRELESS_FLUID_GRID, 1, ItemWirelessFluidGrid.TYPE_NORMAL), - "EPE", - "EGE", - "EAE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(Items.ENDER_PEARL), - 'G', new ItemStack(RSBlocks.GRID, 1, EnumGridType.FLUID.getId()), - 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) + "EPE", + "EGE", + "EAE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(Items.ENDER_PEARL), + 'G', new ItemStack(RSBlocks.GRID, 1, EnumGridType.FLUID.getId()), + 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) ); // Wireless Crafting Monitor GameRegistry.addRecipe(new ItemStack(RSItems.WIRELESS_CRAFTING_MONITOR, 1, ItemWirelessCraftingMonitor.TYPE_NORMAL), - "EPE", - "EME", - "EAE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(Items.ENDER_PEARL), - 'M', new ItemStack(RSBlocks.CRAFTING_MONITOR), - 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) + "EPE", + "EME", + "EAE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(Items.ENDER_PEARL), + 'M', new ItemStack(RSBlocks.CRAFTING_MONITOR), + 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) ); // Crafter GameRegistry.addRecipe(new ItemStack(RSBlocks.CRAFTER), - "ECE", - "AMA", - "EDE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), - 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), - 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), - 'M', new ItemStack(RSBlocks.MACHINE_CASING) + "ECE", + "AMA", + "EDE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), + 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), + 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), + 'M', new ItemStack(RSBlocks.MACHINE_CASING) ); // Processing Pattern Encoder GameRegistry.addRecipe(new ItemStack(RSBlocks.PROCESSING_PATTERN_ENCODER), - "ECE", - "PMP", - "EFE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'M', new ItemStack(RSBlocks.MACHINE_CASING), - 'P', new ItemStack(RSItems.PATTERN), - 'C', new ItemStack(Blocks.CRAFTING_TABLE), - 'F', new ItemStack(Blocks.FURNACE) + "ECE", + "PMP", + "EFE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'M', new ItemStack(RSBlocks.MACHINE_CASING), + 'P', new ItemStack(RSItems.PATTERN), + 'C', new ItemStack(Blocks.CRAFTING_TABLE), + 'F', new ItemStack(Blocks.FURNACE) ); // External Storage GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSBlocks.EXTERNAL_STORAGE), - "CED", - "HMH", - "EPE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'H', "chest", - 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), - 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), - 'M', new ItemStack(RSBlocks.CABLE), - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) + "CED", + "HMH", + "EPE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'H', "chest", + 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), + 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), + 'M', new ItemStack(RSBlocks.CABLE), + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) )); // Importer GameRegistry.addShapelessRecipe(new ItemStack(RSBlocks.IMPORTER), - new ItemStack(RSBlocks.CABLE), - new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), - new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) + new ItemStack(RSBlocks.CABLE), + new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), + new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) ); // Exporter GameRegistry.addShapelessRecipe(new ItemStack(RSBlocks.EXPORTER), - new ItemStack(RSBlocks.CABLE), - new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), - new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) + new ItemStack(RSBlocks.CABLE), + new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), + new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) ); // Destructor GameRegistry.addShapedRecipe(new ItemStack(RSBlocks.DESTRUCTOR), - "EDE", - "RMR", - "EIE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), - 'R', new ItemStack(Items.REDSTONE), - 'M', new ItemStack(RSBlocks.CABLE), - 'I', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) + "EDE", + "RMR", + "EIE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), + 'R', new ItemStack(Items.REDSTONE), + 'M', new ItemStack(RSBlocks.CABLE), + 'I', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) ); // Constructor GameRegistry.addShapedRecipe(new ItemStack(RSBlocks.CONSTRUCTOR), - "ECE", - "RMR", - "EIE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), - 'R', new ItemStack(Items.REDSTONE), - 'M', new ItemStack(RSBlocks.CABLE), - 'I', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) + "ECE", + "RMR", + "EIE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), + 'R', new ItemStack(Items.REDSTONE), + 'M', new ItemStack(RSBlocks.CABLE), + 'I', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) ); // Detector GameRegistry.addRecipe(new ItemStack(RSBlocks.DETECTOR), - "ECE", - "RMR", - "EPE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'R', new ItemStack(Items.REDSTONE), - 'C', new ItemStack(Items.COMPARATOR), - 'M', new ItemStack(RSBlocks.MACHINE_CASING), - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) + "ECE", + "RMR", + "EPE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'R', new ItemStack(Items.REDSTONE), + 'C', new ItemStack(Items.COMPARATOR), + 'M', new ItemStack(RSBlocks.MACHINE_CASING), + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) ); // Storage Parts GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSItems.STORAGE_PART, 1, ItemStoragePart.TYPE_1K), - "SES", - "GRG", - "SGS", - 'R', new ItemStack(Items.REDSTONE), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'S', "itemSilicon", - 'G', "blockGlass" + "SES", + "GRG", + "SGS", + 'R', new ItemStack(Items.REDSTONE), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'S', "itemSilicon", + 'G', "blockGlass" )); GameRegistry.addRecipe(new ItemStack(RSItems.STORAGE_PART, 1, ItemStoragePart.TYPE_4K), - "PEP", - "SRS", - "PSP", - 'R', new ItemStack(Items.REDSTONE), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC), - 'S', new ItemStack(RSItems.STORAGE_PART, 1, ItemStoragePart.TYPE_1K) + "PEP", + "SRS", + "PSP", + 'R', new ItemStack(Items.REDSTONE), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC), + 'S', new ItemStack(RSItems.STORAGE_PART, 1, ItemStoragePart.TYPE_1K) ); GameRegistry.addRecipe(new ItemStack(RSItems.STORAGE_PART, 1, ItemStoragePart.TYPE_16K), - "PEP", - "SRS", - "PSP", - 'R', new ItemStack(Items.REDSTONE), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED), - 'S', new ItemStack(RSItems.STORAGE_PART, 1, ItemStoragePart.TYPE_4K) + "PEP", + "SRS", + "PSP", + 'R', new ItemStack(Items.REDSTONE), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED), + 'S', new ItemStack(RSItems.STORAGE_PART, 1, ItemStoragePart.TYPE_4K) ); GameRegistry.addRecipe(new ItemStack(RSItems.STORAGE_PART, 1, ItemStoragePart.TYPE_64K), - "PEP", - "SRS", - "PSP", - 'R', new ItemStack(Items.REDSTONE), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), - 'S', new ItemStack(RSItems.STORAGE_PART, 1, ItemStoragePart.TYPE_16K) + "PEP", + "SRS", + "PSP", + 'R', new ItemStack(Items.REDSTONE), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), + 'S', new ItemStack(RSItems.STORAGE_PART, 1, ItemStoragePart.TYPE_16K) ); // Fluid Storage Parts GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSItems.FLUID_STORAGE_PART, 1, ItemFluidStoragePart.TYPE_64K), - "SES", - "GRG", - "SGS", - 'R', new ItemStack(Items.BUCKET), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'S', "itemSilicon", - 'G', "blockGlass" + "SES", + "GRG", + "SGS", + 'R', new ItemStack(Items.BUCKET), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'S', "itemSilicon", + 'G', "blockGlass" )); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSItems.FLUID_STORAGE_PART, 1, ItemFluidStoragePart.TYPE_128K), - "PEP", - "SRS", - "PSP", - 'R', new ItemStack(Items.BUCKET), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC), - 'S', new ItemStack(RSItems.FLUID_STORAGE_PART, 1, ItemFluidStoragePart.TYPE_64K) + "PEP", + "SRS", + "PSP", + 'R', new ItemStack(Items.BUCKET), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC), + 'S', new ItemStack(RSItems.FLUID_STORAGE_PART, 1, ItemFluidStoragePart.TYPE_64K) )); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSItems.FLUID_STORAGE_PART, 1, ItemFluidStoragePart.TYPE_256K), - "PEP", - "SRS", - "PSP", - 'R', new ItemStack(Items.BUCKET), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED), - 'S', new ItemStack(RSItems.FLUID_STORAGE_PART, 1, ItemFluidStoragePart.TYPE_128K) + "PEP", + "SRS", + "PSP", + 'R', new ItemStack(Items.BUCKET), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED), + 'S', new ItemStack(RSItems.FLUID_STORAGE_PART, 1, ItemFluidStoragePart.TYPE_128K) )); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSItems.FLUID_STORAGE_PART, 1, ItemFluidStoragePart.TYPE_512K), - "PEP", - "SRS", - "PSP", - 'R', new ItemStack(Items.BUCKET), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), - 'S', new ItemStack(RSItems.FLUID_STORAGE_PART, 1, ItemFluidStoragePart.TYPE_256K) + "PEP", + "SRS", + "PSP", + 'R', new ItemStack(Items.BUCKET), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), + 'S', new ItemStack(RSItems.FLUID_STORAGE_PART, 1, ItemFluidStoragePart.TYPE_256K) )); // Storage Housing GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSItems.STORAGE_HOUSING), - "GRG", - "R R", - "EEE", - 'G', "blockGlass", - 'R', new ItemStack(Items.REDSTONE), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) + "GRG", + "R R", + "EEE", + 'G', "blockGlass", + 'R', new ItemStack(Items.REDSTONE), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) )); // Storage Disks @@ -567,18 +568,18 @@ public class ProxyCommon { ItemStack disk = StorageItemNBT.createStackWithNBT(new ItemStack(RSItems.STORAGE_DISK, 1, type)); GameRegistry.addRecipe(new ShapedOreRecipe(disk, - "GRG", - "RPR", - "EEE", - 'G', "blockGlass", - 'R', new ItemStack(Items.REDSTONE), - 'P', new ItemStack(RSItems.STORAGE_PART, 1, type), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) + "GRG", + "RPR", + "EEE", + 'G', "blockGlass", + 'R', new ItemStack(Items.REDSTONE), + 'P', new ItemStack(RSItems.STORAGE_PART, 1, type), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) )); GameRegistry.addShapelessRecipe(disk, - new ItemStack(RSItems.STORAGE_HOUSING), - new ItemStack(RSItems.STORAGE_PART, 1, type) + new ItemStack(RSItems.STORAGE_HOUSING), + new ItemStack(RSItems.STORAGE_PART, 1, type) ); } @@ -587,39 +588,39 @@ public class ProxyCommon { ItemStack disk = StorageFluidNBT.createStackWithNBT(new ItemStack(RSItems.FLUID_STORAGE_DISK, 1, type)); GameRegistry.addRecipe(new ShapedOreRecipe(disk, - "GRG", - "RPR", - "EEE", - 'G', "blockGlass", - 'R', new ItemStack(Items.REDSTONE), - 'P', new ItemStack(RSItems.FLUID_STORAGE_PART, 1, type), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) + "GRG", + "RPR", + "EEE", + 'G', "blockGlass", + 'R', new ItemStack(Items.REDSTONE), + 'P', new ItemStack(RSItems.FLUID_STORAGE_PART, 1, type), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) )); GameRegistry.addShapelessRecipe(disk, - new ItemStack(RSItems.STORAGE_HOUSING), - new ItemStack(RSItems.FLUID_STORAGE_PART, 1, type) + new ItemStack(RSItems.STORAGE_HOUSING), + new ItemStack(RSItems.FLUID_STORAGE_PART, 1, type) ); } // Pattern GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSItems.PATTERN), - "GRG", - "RGR", - "EEE", - 'G', "blockGlass", - 'R', new ItemStack(Items.REDSTONE), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) + "GRG", + "RGR", + "EEE", + 'G', "blockGlass", + 'R', new ItemStack(Items.REDSTONE), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) )); // Upgrade GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSItems.UPGRADE, 1, 0), - "EGE", - "EPE", - "EGE", - 'G', "blockGlass", - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED), - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) + "EGE", + "EPE", + "EGE", + 'G', "blockGlass", + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED), + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON) )); API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.TYPE_RANGE)); @@ -632,11 +633,11 @@ public class ProxyCommon { API.instance().getSoldererRegistry().addRecipe(new SoldererRecipeUpgrade(ItemUpgrade.initializeForFortune(3))); GameRegistry.addShapedRecipe(new ItemStack(RSItems.UPGRADE, 1, ItemUpgrade.TYPE_STACK), - "USU", - "SUS", - "USU", - 'U', new ItemStack(Items.SUGAR), - 'S', new ItemStack(RSItems.UPGRADE, 1, ItemUpgrade.TYPE_SPEED) + "USU", + "SUS", + "USU", + 'U', new ItemStack(Items.SUGAR), + 'S', new ItemStack(RSItems.UPGRADE, 1, ItemUpgrade.TYPE_SPEED) ); // Storage Blocks @@ -653,117 +654,117 @@ public class ProxyCommon { // Crafting Monitor GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RSBlocks.CRAFTING_MONITOR), - "EGE", - "GMG", - "EPE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'M', new ItemStack(RSBlocks.MACHINE_CASING), - 'G', "blockGlass", - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) + "EGE", + "GMG", + "EPE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'M', new ItemStack(RSBlocks.MACHINE_CASING), + 'G', "blockGlass", + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) )); // Interface API.instance().getSoldererRegistry().addRecipe(API.instance().getSoldererRegistry().createSimpleRecipe( - new ItemStack(RSBlocks.INTERFACE), - 200, - new ItemStack(RSBlocks.IMPORTER), - new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC), - new ItemStack(RSBlocks.EXPORTER) + new ItemStack(RSBlocks.INTERFACE), + 200, + new ItemStack(RSBlocks.IMPORTER), + new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC), + new ItemStack(RSBlocks.EXPORTER) )); // Fluid Interface API.instance().getSoldererRegistry().addRecipe(API.instance().getSoldererRegistry().createSimpleRecipe( - new ItemStack(RSBlocks.FLUID_INTERFACE), - 200, - new ItemStack(Items.BUCKET), - new ItemStack(RSBlocks.INTERFACE), - new ItemStack(Items.BUCKET) + new ItemStack(RSBlocks.FLUID_INTERFACE), + 200, + new ItemStack(Items.BUCKET), + new ItemStack(RSBlocks.INTERFACE), + new ItemStack(Items.BUCKET) )); // Grid Filter GameRegistry.addShapedRecipe(new ItemStack(RSItems.GRID_FILTER), - "EPE", - "PHP", - "EPE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(Items.PAPER), - 'H', new ItemStack(Blocks.HOPPER) + "EPE", + "PHP", + "EPE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(Items.PAPER), + 'H', new ItemStack(Blocks.HOPPER) ); // Network Card GameRegistry.addShapedRecipe(new ItemStack(RSItems.NETWORK_CARD), - "EEE", - "PAP", - "EEE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(Items.PAPER), - 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) + "EEE", + "PAP", + "EEE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(Items.PAPER), + 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) ); // Network Transmitter GameRegistry.addShapedRecipe(new ItemStack(RSBlocks.NETWORK_TRANSMITTER), - "EEE", - "CMD", - "AAA", - 'E', new ItemStack(Items.ENDER_PEARL), - 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), - 'M', new ItemStack(RSBlocks.MACHINE_CASING), - 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), - 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) + "EEE", + "CMD", + "AAA", + 'E', new ItemStack(Items.ENDER_PEARL), + 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), + 'M', new ItemStack(RSBlocks.MACHINE_CASING), + 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), + 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) ); // Network Receiver GameRegistry.addShapedRecipe(new ItemStack(RSBlocks.NETWORK_RECEIVER), - "AAA", - "CMD", - "EEE", - 'E', new ItemStack(Items.ENDER_PEARL), - 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), - 'M', new ItemStack(RSBlocks.MACHINE_CASING), - 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), - 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) + "AAA", + "CMD", + "EEE", + 'E', new ItemStack(Items.ENDER_PEARL), + 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), + 'M', new ItemStack(RSBlocks.MACHINE_CASING), + 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), + 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) ); // Disk Manipulator GameRegistry.addShapedRecipe(new ItemStack(RSBlocks.DISK_MANIPULATOR), - "ESE", - "CMD", - "ESE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'S', new ItemStack(RSItems.STORAGE_HOUSING), - 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), - 'M', new ItemStack(RSBlocks.MACHINE_CASING), - 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION) + "ESE", + "CMD", + "ESE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'S', new ItemStack(RSItems.STORAGE_HOUSING), + 'C', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), + 'M', new ItemStack(RSBlocks.MACHINE_CASING), + 'D', new ItemStack(RSItems.CORE, 1, ItemCore.TYPE_DESTRUCTION) ); // Wrench GameRegistry.addShapedRecipe(new ItemStack(RSItems.WRENCH), - "EPE", - "EEE", - " E ", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC) + "EPE", + "EEE", + " E ", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_BASIC) ); // Security Manager GameRegistry.addShapedRecipe(new ItemStack(RSBlocks.SECURITY_MANAGER), - "ECE", - "CMC", - "ECE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), - 'M', new ItemStack(RSBlocks.MACHINE_CASING), - 'C', new ItemStack(RSItems.NETWORK_CARD) + "ECE", + "CMC", + "ECE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), + 'M', new ItemStack(RSBlocks.MACHINE_CASING), + 'C', new ItemStack(RSItems.NETWORK_CARD) ); // Security Card GameRegistry.addShapedRecipe(new ItemStack(RSItems.SECURITY_CARD), - "EEE", - "CAC", - "EEE", - 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), - 'C', new ItemStack(RSItems.NETWORK_CARD), - 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) + "EEE", + "CAC", + "EEE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'C', new ItemStack(RSItems.NETWORK_CARD), + 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) ); } @@ -793,6 +794,18 @@ public class ProxyCommon { try { TileBase tileInstance = tile.newInstance(); + if (tileInstance instanceof TileNode) { + String nodeId = ((TileNode) tileInstance).createNode().getId(); + + API.instance().getNetworkNodeRegistry().add(nodeId, tag -> { + INetworkNode node = ((TileNode) tileInstance).createNode(); + + node.read(tag); + + return node; + }); + } + tileInstance.getDataManager().getParameters().forEach(TileDataManager::registerParameter); } catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCable.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCable.java index c294a0ba1..cf1a543cc 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileCable.java @@ -1,12 +1,11 @@ package com.raoulvdberge.refinedstorage.tile; -import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.network.INetworkNode; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeBasic; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCable; public class TileCable extends TileNode { @Override public INetworkNode createNode() { - return new NetworkNodeBasic(this, RS.INSTANCE.config.cableUsage, false); + return new NetworkNodeCable(); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java index 6d17240a8..b0726419a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java @@ -327,6 +327,11 @@ public class TileController extends TileBase implements INetworkMaster, IRedston super.update(); } + @Override + public String getId() { + return null; + } + @Override public IItemGridHandler getItemGridHandler() { return itemGridHandler; @@ -798,7 +803,7 @@ public class TileController extends TileBase implements INetworkMaster, IRedston if (container instanceof ICraftingPatternContainer) { ICraftingPattern pattern = ((ICraftingPatternProvider) stack.getItem()).create(world, stack, (ICraftingPatternContainer) container); - ICraftingTaskFactory factory = API.instance().getCraftingTaskRegistry().getFactory(tag.getString(ICraftingTask.NBT_PATTERN_ID)); + ICraftingTaskFactory factory = API.instance().getCraftingTaskRegistry().get(tag.getString(ICraftingTask.NBT_PATTERN_ID)); if (factory != null) { return factory.create(world, network, tag.hasKey(ICraftingTask.NBT_REQUESTED) ? new ItemStack(tag.getCompoundTag(ICraftingTask.NBT_REQUESTED)) : null, pattern, tag.getInteger(ICraftingTask.NBT_QUANTITY), tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java index 22ef25100..905344a76 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNetworkReceiver.java @@ -1,12 +1,11 @@ package com.raoulvdberge.refinedstorage.tile; -import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.network.INetworkNode; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeBasic; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeNetworkReceiver; public class TileNetworkReceiver extends TileNode { @Override public INetworkNode createNode() { - return new NetworkNodeBasic(this, RS.INSTANCE.config.networkReceiverUsage, true); + return new NetworkNodeNetworkReceiver(); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNode.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNode.java index 3ab18dae3..fbef4bcb2 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileNode.java @@ -1,8 +1,8 @@ package com.raoulvdberge.refinedstorage.tile; import com.raoulvdberge.refinedstorage.api.network.INetworkNode; +import com.raoulvdberge.refinedstorage.api.network.INetworkNodeProvider; import com.raoulvdberge.refinedstorage.api.network.INetworkNodeProxy; -import com.raoulvdberge.refinedstorage.api.network.INetworkNodeRegistry; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode; import com.raoulvdberge.refinedstorage.proxy.CapabilityNetworkNodeProxy; @@ -40,12 +40,12 @@ public abstract class TileNode extends TileBase implements INetworkNodeProxy, IN public void invalidate() { super.invalidate(); - if (getWorld() != null && !getWorld().isRemote) { + if (getWorld() != null) { INetworkNode node = getNode(); - API.instance().getNetworkNodeRegistry(getWorld().provider.getDimension()).removeNode(pos); + API.instance().getNetworkNodeProvider(getWorld().provider.getDimension()).removeNode(pos); - if (node.getNetwork() != null) { + if (!getWorld().isRemote && node.getNetwork() != null) { node.getNetwork().getNodeGraph().rebuild(); } } @@ -107,12 +107,12 @@ public abstract class TileNode extends TileBase implements INetworkNodeProxy, IN @Override public INetworkNode getNode() { - INetworkNodeRegistry registry = API.instance().getNetworkNodeRegistry(getWorld().provider.getDimension()); + INetworkNodeProvider provider = API.instance().getNetworkNodeProvider(getWorld().provider.getDimension()); - INetworkNode node = registry.getNode(pos); + INetworkNode node = provider.getNode(pos); if (node == null) { - registry.setNode(pos, node = createNode()); + provider.setNode(pos, node = createNode()); } return node;