From 0322a35bc401d3182c63f6fc81ba631f92f87183 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Mon, 8 May 2017 21:48:40 +0200 Subject: [PATCH] Add OC integration skeleton --- .../integration/oc/DriverNetwork.java | 23 +++++++++++++++++++ .../integration/oc/EnvironmentNetwork.java | 17 ++++++++++++++ .../integration/oc/IntegrationOC.java | 16 +++++++++++++ .../refinedstorage/proxy/ProxyCommon.java | 5 +++- 4 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/integration/oc/DriverNetwork.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/integration/oc/EnvironmentNetwork.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/integration/oc/IntegrationOC.java diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/oc/DriverNetwork.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/oc/DriverNetwork.java new file mode 100644 index 000000000..108d9767d --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/oc/DriverNetwork.java @@ -0,0 +1,23 @@ +package com.raoulvdberge.refinedstorage.integration.oc; + +import com.raoulvdberge.refinedstorage.proxy.CapabilityNetworkNodeProxy; +import li.cil.oc.api.driver.DriverBlock; +import li.cil.oc.api.network.ManagedEnvironment; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class DriverNetwork implements DriverBlock { + @Override + public boolean worksWith(World world, BlockPos pos, EnumFacing facing) { + TileEntity tile = world.getTileEntity(pos); + + return tile != null && tile.hasCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, facing); + } + + @Override + public ManagedEnvironment createEnvironment(World world, BlockPos pos, EnumFacing facing) { + return new EnvironmentNetwork(world.getTileEntity(pos).getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, facing).getNode()); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/oc/EnvironmentNetwork.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/oc/EnvironmentNetwork.java new file mode 100644 index 000000000..3cc2c9057 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/oc/EnvironmentNetwork.java @@ -0,0 +1,17 @@ +package com.raoulvdberge.refinedstorage.integration.oc; + +import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; +import li.cil.oc.api.Network; +import li.cil.oc.api.network.Visibility; +import li.cil.oc.api.prefab.AbstractManagedEnvironment; + +public class EnvironmentNetwork extends AbstractManagedEnvironment { + protected final INetworkNode node; + + public EnvironmentNetwork(INetworkNode node) { + this.node = node; + + setNode(Network.newNode(this, Visibility.Network).withComponent("refinedstorage", Visibility.Network).create()); + } +} + diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/oc/IntegrationOC.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/oc/IntegrationOC.java new file mode 100644 index 000000000..34458cb84 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/oc/IntegrationOC.java @@ -0,0 +1,16 @@ +package com.raoulvdberge.refinedstorage.integration.oc; + +import li.cil.oc.api.Driver; +import net.minecraftforge.fml.common.Loader; + +public final class IntegrationOC { + private static final String ID = "opencomputers"; + + public static boolean isLoaded() { + return Loader.isModLoaded(ID); + } + + public static void register() { + Driver.add(new DriverNetwork()); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index 27b086561..9fe981210 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -21,6 +21,7 @@ import com.raoulvdberge.refinedstorage.block.*; import com.raoulvdberge.refinedstorage.gui.GuiHandler; import com.raoulvdberge.refinedstorage.integration.craftingtweaks.IntegrationCraftingTweaks; import com.raoulvdberge.refinedstorage.integration.forgeenergy.ReaderWriterHandlerForgeEnergy; +import com.raoulvdberge.refinedstorage.integration.oc.IntegrationOC; import com.raoulvdberge.refinedstorage.integration.tesla.IntegrationTesla; import com.raoulvdberge.refinedstorage.item.*; import com.raoulvdberge.refinedstorage.network.*; @@ -818,7 +819,9 @@ public class ProxyCommon { } public void init(FMLInitializationEvent e) { - // NO OP + if (IntegrationOC.isLoaded()) { + IntegrationOC.register(); + } } public void postInit(FMLPostInitializationEvent e) {