Saving node data

This commit is contained in:
raoulvdberge
2016-12-22 02:36:34 +01:00
parent 2dc6a39da4
commit 9b1b52daea
53 changed files with 772 additions and 408 deletions

View File

@@ -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

View File

@@ -24,5 +24,5 @@ public interface ICraftingMonitorElementRegistry {
* @return the factory, or null if no factory was found
*/
@Nullable
Function<ByteBuf, ICraftingMonitorElement> getFactory(String id);
Function<ByteBuf, ICraftingMonitorElement> get(String id);
}

View File

@@ -24,5 +24,5 @@ public interface ICraftingPreviewElementRegistry {
* @return the factory, or null if no factory was found
*/
@Nullable
Function<ByteBuf, ICraftingPreviewElement> getFactory(String id);
Function<ByteBuf, ICraftingPreviewElement> get(String id);
}

View File

@@ -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);
}

View File

@@ -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);
}
/**

View File

@@ -56,4 +56,6 @@ public interface INetworkNode {
BlockPos getPos();
void markDirty();
String getId();
}

View File

@@ -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<INetworkNode> all();
void clear();
}

View File

@@ -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<NBTTagCompound, INetworkNode> factory);
@Nullable
INetworkNode getNode(BlockPos pos);
void removeNode(BlockPos pos);
void setNode(BlockPos pos, INetworkNode node);
Function<NBTTagCompound, INetworkNode> get(String id);
}

View File

@@ -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<IReaderWriterHandlerFactory> getFactories();
Collection<IReaderWriterHandlerFactory> all();
}

View File

@@ -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<Integer, INetworkNodeRegistry> networkNodeRegistryServer = new HashMap<>();
private Map<Integer, INetworkNodeRegistry> networkNodeRegistryClient = new HashMap<>();
private INetworkNodeRegistry networkNodeRegistry = new NetworkNodeRegistry();
private Map<Integer, INetworkNodeProvider> networkNodeProviderServer = new HashMap<>();
private Map<Integer, INetworkNodeProvider> 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<Integer, INetworkNodeRegistry> 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<Integer, INetworkNodeProvider> provider = FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT ? networkNodeProviderClient : networkNodeProviderServer;
return provider.computeIfAbsent(dimension, r -> new NetworkNodeProvider());
}
@Override

View File

@@ -19,7 +19,7 @@ public class CraftingMonitorElementRegistry implements ICraftingMonitorElementRe
@Nullable
@Override
public Function<ByteBuf, ICraftingMonitorElement> getFactory(String id) {
public Function<ByteBuf, ICraftingMonitorElement> get(String id) {
return registry.get(id);
}
}

View File

@@ -19,7 +19,7 @@ public class CraftingPreviewElementRegistry implements ICraftingPreviewElementRe
@Nullable
@Override
public Function<ByteBuf, ICraftingPreviewElement> getFactory(String id) {
public Function<ByteBuf, ICraftingPreviewElement> get(String id) {
return registry.get(id);
}
}

View File

@@ -44,7 +44,6 @@ public class CraftingTaskFactory implements ICraftingTaskFactory {
}
}
NBTTagList toInsertList = tag.getTagList(CraftingTask.NBT_TO_INSERT_ITEMS, Constants.NBT.TAG_COMPOUND);
Deque<ItemStack> toInsert = new ArrayDeque<>();

View File

@@ -11,13 +11,13 @@ public class CraftingTaskRegistry implements ICraftingTaskRegistry {
private Map<String, ICraftingTaskFactory> 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);
}
}

View File

@@ -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();
}
}

View File

@@ -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<BlockPos, INetworkNode> 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<INetworkNode> all() {
return nodes.values();
}
@Override
public void clear() {
nodes.clear();
}
}

View File

@@ -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<BlockPos, INetworkNode> nodes = new HashMap<>();
private Map<String, Function<NBTTagCompound, INetworkNode>> factories = new HashMap<>();
@Override
public void add(String id, Function<NBTTagCompound, INetworkNode> 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<NBTTagCompound, INetworkNode> get(String id) {
return factories.get(id);
}
}

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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(

View File

@@ -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);

View File

@@ -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();

View File

@@ -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<ISecurityCard> 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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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<NBTTagCompound, INetworkNode> 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;
}
}

View File

@@ -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);

View File

@@ -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)));

View File

@@ -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<IReaderWriterHandlerFactory> getFactories() {
public Collection<IReaderWriterHandlerFactory> all() {
return factories.values();
}
}

View File

@@ -28,7 +28,7 @@ public class MessageCraftingMonitorElements implements IMessage, IMessageHandler
int size = buf.readInt();
for (int i = 0; i < size; ++i) {
Function<ByteBuf, ICraftingMonitorElement> factory = API.instance().getCraftingMonitorElementRegistry().getFactory(ByteBufUtils.readUTF8String(buf));
Function<ByteBuf, ICraftingMonitorElement> factory = API.instance().getCraftingMonitorElementRegistry().get(ByteBufUtils.readUTF8String(buf));
if (factory != null) {
elements.add(factory.apply(buf));

View File

@@ -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));
}
}

View File

@@ -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();

View File

@@ -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();
}
}

View File

@@ -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);

View File

@@ -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();
}
}

View File

@@ -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;