diff --git a/src/main/java/li/cil/oc/api/prefab/DriverBlock.java b/src/main/java/li/cil/oc/api/prefab/DriverBlock.java
index bb9e1654f..512c6937c 100644
--- a/src/main/java/li/cil/oc/api/prefab/DriverBlock.java
+++ b/src/main/java/li/cil/oc/api/prefab/DriverBlock.java
@@ -19,7 +19,9 @@ import net.minecraftforge.oredict.OreDictionary;
* any.
*
* @see li.cil.oc.api.network.ManagedEnvironment
+ * @deprecated Use {@link DriverSidedBlock} instead.
*/
+@Deprecated // TODO Remove in OC 1.7
@SuppressWarnings("UnusedDeclaration")
public abstract class DriverBlock implements li.cil.oc.api.driver.Block {
protected final ItemStack[] blocks;
diff --git a/src/main/java/li/cil/oc/api/prefab/DriverSidedBlock.java b/src/main/java/li/cil/oc/api/prefab/DriverSidedBlock.java
new file mode 100644
index 000000000..dfe8aca2d
--- /dev/null
+++ b/src/main/java/li/cil/oc/api/prefab/DriverSidedBlock.java
@@ -0,0 +1,53 @@
+package li.cil.oc.api.prefab;
+
+import net.minecraft.block.Block;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.oredict.OreDictionary;
+
+/**
+ * If you wish to create a block component for a third-party block, i.e. a block
+ * for which you do not control the tile entity, such as vanilla blocks, you
+ * will need a block driver.
+ *
+ * This prefab allows creating a driver that works for a specified list of item
+ * stacks (to support different blocks with the same id but different metadata
+ * values).
+ *
+ * You still have to provide the implementation for creating its environment, if
+ * any.
+ *
+ * To limit sidedness, I recommend overriding {@link #worksWith(World, int, int, int, ForgeDirection)}
+ * and calling super.worksWith
in addition to the side check.
+ *
+ * @see li.cil.oc.api.network.ManagedEnvironment
+ */
+@SuppressWarnings("UnusedDeclaration")
+public abstract class DriverSidedBlock implements li.cil.oc.api.driver.SidedBlock {
+ protected final ItemStack[] blocks;
+
+ protected DriverSidedBlock(final ItemStack... blocks) {
+ this.blocks = blocks.clone();
+ }
+
+ @Override
+ public boolean worksWith(final World world, final int x, final int y, final int z, final ForgeDirection side) {
+ return worksWith(world.getBlock(x, y, z), world.getBlockMetadata(x, y, z));
+ }
+
+ protected boolean worksWith(final Block referenceBlock, final int referenceMetadata) {
+ for (ItemStack stack : blocks) {
+ if (stack != null && stack.getItem() instanceof ItemBlock) {
+ final ItemBlock item = (ItemBlock) stack.getItem();
+ final Block supportedBlock = item.field_150939_a;
+ final int supportedMetadata = item.getMetadata(stack.getItemDamage());
+ if (referenceBlock == supportedBlock && (referenceMetadata == supportedMetadata || stack.getItemDamage() == OreDictionary.WILDCARD_VALUE)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/src/main/java/li/cil/oc/api/prefab/DriverSidedTileEntity.java b/src/main/java/li/cil/oc/api/prefab/DriverSidedTileEntity.java
new file mode 100644
index 000000000..1eb8cedad
--- /dev/null
+++ b/src/main/java/li/cil/oc/api/prefab/DriverSidedTileEntity.java
@@ -0,0 +1,25 @@
+package li.cil.oc.api.prefab;
+
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+/**
+ * To limit sidedness, I recommend overriding {@link #worksWith(World, int, int, int, ForgeDirection)}
+ * and calling super.worksWith
in addition to the side check.
+ */
+public abstract class DriverSidedTileEntity implements li.cil.oc.api.driver.SidedBlock {
+ public abstract Class> getTileEntityClass();
+
+ @Override
+ public boolean worksWith(final World world, final int x, final int y, final int z, final ForgeDirection side) {
+ final Class> filter = getTileEntityClass();
+ if (filter == null) {
+ // This can happen if filter classes are deduced by reflection and
+ // the class in question is not present.
+ return false;
+ }
+ final TileEntity tileEntity = world.getTileEntity(x, y, z);
+ return tileEntity != null && filter.isAssignableFrom(tileEntity.getClass());
+ }
+}
diff --git a/src/main/java/li/cil/oc/api/prefab/DriverTileEntity.java b/src/main/java/li/cil/oc/api/prefab/DriverTileEntity.java
index e9c6890ef..b458246b8 100644
--- a/src/main/java/li/cil/oc/api/prefab/DriverTileEntity.java
+++ b/src/main/java/li/cil/oc/api/prefab/DriverTileEntity.java
@@ -3,6 +3,10 @@ package li.cil.oc.api.prefab;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
+/**
+ * @deprecated Use {@link DriverSidedTileEntity} instead.
+ */
+@Deprecated // TODO Remove in OC 1.7
public abstract class DriverTileEntity implements li.cil.oc.api.driver.Block {
public abstract Class> getTileEntityClass();
diff --git a/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala b/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala
index c8ff7966b..615c2ded0 100644
--- a/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala
+++ b/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala
@@ -9,17 +9,18 @@ import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.Component
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ExtendedArguments._
import li.cil.oc.util.ResultWrapper._
import net.minecraft.item.ItemStack
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-object DriverBlockInterface extends DriverTileEntity {
+object DriverBlockInterface extends DriverSidedTileEntity {
def getTileEntityClass: Class[_] = classOf[TileInterface]
- def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileInterface])
final class Environment(val tile: TileInterface) extends ManagedTileEntityEnvironment[TileInterface](tile, "me_interface") with NamedBlock with NetworkControl[TileInterface] {
diff --git a/src/main/scala/li/cil/oc/integration/appeng/DriverController.scala b/src/main/scala/li/cil/oc/integration/appeng/DriverController.scala
index e51ec6a00..6b2bc9855 100644
--- a/src/main/scala/li/cil/oc/integration/appeng/DriverController.scala
+++ b/src/main/scala/li/cil/oc/integration/appeng/DriverController.scala
@@ -5,20 +5,21 @@ import appeng.me.helpers.IGridProxyable
import li.cil.oc.api.driver.EnvironmentProvider
import li.cil.oc.api.driver.NamedBlock
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntity
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
import scala.language.existentials
-object DriverController extends DriverTileEntity {
+object DriverController extends DriverSidedTileEntity {
private type TileController = TileEntity with IGridProxyable with IActionHost
def getTileEntityClass = AEUtil.controllerClass
- def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileController])
final class Environment(val tile: TileController) extends ManagedTileEntityEnvironment[TileController](tile, "me_controller") with NamedBlock with NetworkControl[TileController] {
diff --git a/src/main/scala/li/cil/oc/integration/appeng/DriverExportBus.scala b/src/main/scala/li/cil/oc/integration/appeng/DriverExportBus.scala
index 636b01a80..e046c139d 100644
--- a/src/main/scala/li/cil/oc/integration/appeng/DriverExportBus.scala
+++ b/src/main/scala/li/cil/oc/integration/appeng/DriverExportBus.scala
@@ -25,14 +25,14 @@ import net.minecraftforge.common.util.ForgeDirection
import scala.collection.convert.WrapAsScala._
-object DriverExportBus extends driver.Block {
- override def worksWith(world: World, x: Int, y: Int, z: Int) =
+object DriverExportBus extends driver.SidedBlock {
+ override def worksWith(world: World, x: Int, y: Int, z: Int, side: ForgeDirection) =
world.getTileEntity(x, y, z) match {
case container: IPartHost => ForgeDirection.VALID_DIRECTIONS.map(container.getPart).exists(_.isInstanceOf[PartExportBus])
case _ => false
}
- override def createEnvironment(world: World, x: Int, y: Int, z: Int) = new Environment(world.getTileEntity(x, y, z).asInstanceOf[IPartHost])
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection) = new Environment(world.getTileEntity(x, y, z).asInstanceOf[IPartHost])
final class Environment(val host: IPartHost) extends ManagedTileEntityEnvironment[IPartHost](host, "me_exportbus") with NamedBlock with PartEnvironmentBase {
override def preferredName = "me_exportbus"
diff --git a/src/main/scala/li/cil/oc/integration/appeng/DriverImportBus.scala b/src/main/scala/li/cil/oc/integration/appeng/DriverImportBus.scala
index 8b4f42a64..1b55486dc 100644
--- a/src/main/scala/li/cil/oc/integration/appeng/DriverImportBus.scala
+++ b/src/main/scala/li/cil/oc/integration/appeng/DriverImportBus.scala
@@ -13,14 +13,14 @@ import net.minecraft.item.ItemStack
import net.minecraft.world.World
import net.minecraftforge.common.util.ForgeDirection
-object DriverImportBus extends driver.Block {
- override def worksWith(world: World, x: Int, y: Int, z: Int) =
+object DriverImportBus extends driver.SidedBlock {
+ override def worksWith(world: World, x: Int, y: Int, z: Int, side: ForgeDirection) =
world.getTileEntity(x, y, z) match {
case container: IPartHost => ForgeDirection.VALID_DIRECTIONS.map(container.getPart).exists(_.isInstanceOf[PartImportBus])
case _ => false
}
- override def createEnvironment(world: World, x: Int, y: Int, z: Int) = new Environment(world.getTileEntity(x, y, z).asInstanceOf[IPartHost])
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection) = new Environment(world.getTileEntity(x, y, z).asInstanceOf[IPartHost])
final class Environment(val host: IPartHost) extends ManagedTileEntityEnvironment[IPartHost](host, "me_importbus") with NamedBlock with PartEnvironmentBase {
override def preferredName = "me_importbus"
diff --git a/src/main/scala/li/cil/oc/integration/appeng/DriverPartInterface.scala b/src/main/scala/li/cil/oc/integration/appeng/DriverPartInterface.scala
index 29e2e1511..52e519230 100644
--- a/src/main/scala/li/cil/oc/integration/appeng/DriverPartInterface.scala
+++ b/src/main/scala/li/cil/oc/integration/appeng/DriverPartInterface.scala
@@ -13,14 +13,14 @@ import net.minecraft.item.ItemStack
import net.minecraft.world.World
import net.minecraftforge.common.util.ForgeDirection
-object DriverPartInterface extends driver.Block {
- override def worksWith(world: World, x: Int, y: Int, z: Int) =
+object DriverPartInterface extends driver.SidedBlock {
+ override def worksWith(world: World, x: Int, y: Int, z: Int, side: ForgeDirection) =
world.getTileEntity(x, y, z) match {
case container: IPartHost => ForgeDirection.VALID_DIRECTIONS.map(container.getPart).exists(_.isInstanceOf[PartInterface])
case _ => false
}
- override def createEnvironment(world: World, x: Int, y: Int, z: Int) = new Environment(world.getTileEntity(x, y, z).asInstanceOf[IPartHost])
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection) = new Environment(world.getTileEntity(x, y, z).asInstanceOf[IPartHost])
final class Environment(val host: IPartHost) extends ManagedTileEntityEnvironment[IPartHost](host, "me_interface") with NamedBlock with PartEnvironmentBase {
override def preferredName = "me_interface"
diff --git a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java
index b1f72c588..27665090c 100644
--- a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java
+++ b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverBloodAltar.java
@@ -1,23 +1,24 @@
package li.cil.oc.integration.bloodmagic;
+import WayofTime.alchemicalWizardry.api.tile.IBloodAltar;
import li.cil.oc.api.driver.NamedBlock;
import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
-import WayofTime.alchemicalWizardry.api.tile.IBloodAltar;
+import net.minecraftforge.common.util.ForgeDirection;
-public class DriverBloodAltar extends DriverTileEntity {
+public class DriverBloodAltar extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IBloodAltar.class;
}
@Override
- public ManagedEnvironment createEnvironment(World world, int x, int y, int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IBloodAltar) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverMasterRitualStone.java b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverMasterRitualStone.java
index 3168651dc..878ec2acf 100644
--- a/src/main/scala/li/cil/oc/integration/bloodmagic/DriverMasterRitualStone.java
+++ b/src/main/scala/li/cil/oc/integration/bloodmagic/DriverMasterRitualStone.java
@@ -7,18 +7,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public class DriverMasterRitualStone extends DriverTileEntity {
+public class DriverMasterRitualStone extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IMasterRitualStone.class;
}
@Override
- public ManagedEnvironment createEnvironment(World world, int x, int y, int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IMasterRitualStone) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/buildcraft/tiles/DriverControllable.java b/src/main/scala/li/cil/oc/integration/buildcraft/tiles/DriverControllable.java
index 9746e37b3..111fe5426 100644
--- a/src/main/scala/li/cil/oc/integration/buildcraft/tiles/DriverControllable.java
+++ b/src/main/scala/li/cil/oc/integration/buildcraft/tiles/DriverControllable.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverControllable extends DriverTileEntity {
+public final class DriverControllable extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IControllable.class;
}
@Override
- public ManagedEnvironment createEnvironment(World world, int x, int y, int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IControllable) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/buildcraft/transport/DriverPipeTile.java b/src/main/scala/li/cil/oc/integration/buildcraft/transport/DriverPipeTile.java
index cc865cbe1..c1daf4676 100644
--- a/src/main/scala/li/cil/oc/integration/buildcraft/transport/DriverPipeTile.java
+++ b/src/main/scala/li/cil/oc/integration/buildcraft/transport/DriverPipeTile.java
@@ -7,19 +7,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverPipeTile extends DriverTileEntity {
+public final class DriverPipeTile extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IPipeTile.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IPipeTile) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyHandler.java b/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyHandler.java
index 6e048dd75..1ac30c504 100644
--- a/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyHandler.java
+++ b/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyHandler.java
@@ -5,19 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnergyHandler extends DriverTileEntity {
+public final class DriverEnergyHandler extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IEnergyHandler.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IEnergyHandler) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyProvider.java b/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyProvider.java
index 817b79a26..ded559a74 100644
--- a/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyProvider.java
+++ b/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyProvider.java
@@ -6,19 +6,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnergyProvider extends DriverTileEntity {
+public final class DriverEnergyProvider extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IEnergyProvider.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IEnergyProvider) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyReceiver.java b/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyReceiver.java
index 061722aad..2ed372acb 100644
--- a/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyReceiver.java
+++ b/src/main/scala/li/cil/oc/integration/cofh/energy/DriverEnergyReceiver.java
@@ -6,24 +6,24 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnergyReceiver extends DriverTileEntity {
+public final class DriverEnergyReceiver extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IEnergyReceiver.class;
}
@Override
- public boolean worksWith(World world, int x, int y, int z) {
- return super.worksWith(world, x, y, z) && !(world.getTileEntity(x, y, z) instanceof IEnergyProvider);
+ public boolean worksWith(World world, int x, int y, int z, final ForgeDirection side) {
+ return super.worksWith(world, x, y, z, side) && !(world.getTileEntity(x, y, z) instanceof IEnergyProvider);
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IEnergyReceiver) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverEnergyInfo.java b/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverEnergyInfo.java
index 4991a1a55..e09bd7b88 100644
--- a/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverEnergyInfo.java
+++ b/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverEnergyInfo.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnergyInfo extends DriverTileEntity {
+public final class DriverEnergyInfo extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IEnergyInfo.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IEnergyInfo) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverRedstoneControl.java b/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverRedstoneControl.java
index e4c233815..6e896371f 100644
--- a/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverRedstoneControl.java
+++ b/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverRedstoneControl.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverRedstoneControl extends DriverTileEntity {
+public final class DriverRedstoneControl extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IRedstoneControl.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IRedstoneControl) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverSecureTile.java b/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverSecureTile.java
index d6c783b3e..4c7e5cc53 100644
--- a/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverSecureTile.java
+++ b/src/main/scala/li/cil/oc/integration/cofh/tileentity/DriverSecureTile.java
@@ -5,19 +5,20 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
import org.apache.commons.lang3.text.WordUtils;
-public final class DriverSecureTile extends DriverTileEntity {
+public final class DriverSecureTile extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return ISecurable.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((ISecurable) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderEnergy.java b/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderEnergy.java
index 4c704bdfe..6c2547fcf 100644
--- a/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderEnergy.java
+++ b/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderEnergy.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnderEnergy extends DriverTileEntity {
+public final class DriverEnderEnergy extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IEnderEnergyHandler.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IEnderEnergyHandler) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderFluid.java b/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderFluid.java
index a38f0da5d..da8516214 100644
--- a/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderFluid.java
+++ b/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderFluid.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnderFluid extends DriverTileEntity {
+public final class DriverEnderFluid extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IEnderFluidHandler.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IEnderFluidHandler) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderItem.java b/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderItem.java
index 5115dc064..4caf03c0b 100644
--- a/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderItem.java
+++ b/src/main/scala/li/cil/oc/integration/cofh/transport/DriverEnderItem.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnderItem extends DriverTileEntity {
+public final class DriverEnderItem extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IEnderItemHandler.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IEnderItemHandler) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/computercraft/DriverPeripheral.java b/src/main/scala/li/cil/oc/integration/computercraft/DriverPeripheral.java
index e8c9b3013..358c27394 100644
--- a/src/main/scala/li/cil/oc/integration/computercraft/DriverPeripheral.java
+++ b/src/main/scala/li/cil/oc/integration/computercraft/DriverPeripheral.java
@@ -20,13 +20,14 @@ import li.cil.oc.api.network.Visibility;
import li.cil.oc.util.Reflection;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-public final class DriverPeripheral implements li.cil.oc.api.driver.Block {
+public final class DriverPeripheral implements li.cil.oc.api.driver.SidedBlock {
private static Set> blacklist;
private boolean isBlacklisted(final Object o) {
@@ -53,9 +54,9 @@ public final class DriverPeripheral implements li.cil.oc.api.driver.Block {
return false;
}
- private IPeripheral findPeripheral(final World world, final int x, final int y, final int z) {
+ private IPeripheral findPeripheral(final World world, final int x, final int y, final int z, final ForgeDirection side) {
try {
- final IPeripheral p = dan200.computercraft.ComputerCraft.getPeripheralAt(world, x, y, z, -1);
+ final IPeripheral p = dan200.computercraft.ComputerCraft.getPeripheralAt(world, x, y, z, side.ordinal());
if (!isBlacklisted(p)) {
return p;
}
@@ -66,7 +67,7 @@ public final class DriverPeripheral implements li.cil.oc.api.driver.Block {
}
@Override
- public boolean worksWith(final World world, final int x, final int y, final int z) {
+ public boolean worksWith(final World world, final int x, final int y, final int z, final ForgeDirection side) {
final TileEntity tileEntity = world.getTileEntity(x, y, z);
return tileEntity != null
// This ensures we don't get duplicate components, in case the
@@ -76,12 +77,12 @@ public final class DriverPeripheral implements li.cil.oc.api.driver.Block {
// to be incompatible with OpenComputers when used directly.
&& !isBlacklisted(tileEntity)
// Actual check if it's a peripheral.
- && findPeripheral(world, x, y, z) != null;
+ && findPeripheral(world, x, y, z, side) != null;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
- return new Environment(findPeripheral(world, x, y, z));
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
+ return new Environment(findPeripheral(world, x, y, z, side));
}
public static class Environment extends li.cil.oc.api.prefab.ManagedEnvironment implements li.cil.oc.api.network.ManagedPeripheral {
diff --git a/src/main/scala/li/cil/oc/integration/dsu/DriverDeepStorageUnit.scala b/src/main/scala/li/cil/oc/integration/dsu/DriverDeepStorageUnit.scala
index 164c25b95..b1c9944ac 100644
--- a/src/main/scala/li/cil/oc/integration/dsu/DriverDeepStorageUnit.scala
+++ b/src/main/scala/li/cil/oc/integration/dsu/DriverDeepStorageUnit.scala
@@ -5,16 +5,17 @@ import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ResultWrapper._
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
import powercrystals.minefactoryreloaded.api.IDeepStorageUnit
-object DriverDeepStorageUnit extends DriverTileEntity {
+object DriverDeepStorageUnit extends DriverSidedTileEntity {
override def getTileEntityClass: Class[_] = classOf[IDeepStorageUnit]
- override def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[IDeepStorageUnit])
final class Environment(tileEntity: IDeepStorageUnit) extends ManagedTileEntityEnvironment[IDeepStorageUnit](tileEntity, "deep_storage_unit") {
diff --git a/src/main/scala/li/cil/oc/integration/ec/DriverBlockInterface.scala b/src/main/scala/li/cil/oc/integration/ec/DriverBlockInterface.scala
index 0bc438b57..689360d69 100644
--- a/src/main/scala/li/cil/oc/integration/ec/DriverBlockInterface.scala
+++ b/src/main/scala/li/cil/oc/integration/ec/DriverBlockInterface.scala
@@ -3,16 +3,17 @@ package li.cil.oc.integration.ec
import appeng.tile.misc.TileInterface
import li.cil.oc.api.driver.EnvironmentProvider
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.integration.appeng.AEUtil
import net.minecraft.item.ItemStack
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-object DriverBlockInterface extends DriverTileEntity {
+object DriverBlockInterface extends DriverSidedTileEntity {
def getTileEntityClass: Class[_] = classOf[TileInterface]
- def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileInterface])
final class Environment(val tile: TileInterface) extends ManagedTileEntityEnvironment[TileInterface](tile, "me_interface") with NetworkControl[TileInterface]
diff --git a/src/main/scala/li/cil/oc/integration/ec/DriverController.scala b/src/main/scala/li/cil/oc/integration/ec/DriverController.scala
index 2366ffbdb..8832dd0cf 100644
--- a/src/main/scala/li/cil/oc/integration/ec/DriverController.scala
+++ b/src/main/scala/li/cil/oc/integration/ec/DriverController.scala
@@ -4,21 +4,22 @@ import appeng.api.networking.security.IActionHost
import appeng.me.helpers.IGridProxyable
import li.cil.oc.api.driver.EnvironmentProvider
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.integration.appeng.AEUtil
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntity
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
import scala.language.existentials
-object DriverController extends DriverTileEntity {
+object DriverController extends DriverSidedTileEntity {
private type TileController = TileEntity with IGridProxyable with IActionHost
def getTileEntityClass = AEUtil.controllerClass
- def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileController])
final class Environment(val tile: TileController) extends ManagedTileEntityEnvironment[TileController](tile, "me_controller") with NetworkControl[TileController]
diff --git a/src/main/scala/li/cil/oc/integration/enderstorage/DriverFrequencyOwner.java b/src/main/scala/li/cil/oc/integration/enderstorage/DriverFrequencyOwner.java
index 8d39df5a2..b3f847199 100644
--- a/src/main/scala/li/cil/oc/integration/enderstorage/DriverFrequencyOwner.java
+++ b/src/main/scala/li/cil/oc/integration/enderstorage/DriverFrequencyOwner.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverFrequencyOwner extends DriverTileEntity {
+public final class DriverFrequencyOwner extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return TileFrequencyOwner.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((TileFrequencyOwner) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/forestry/DriverAnalyzer.scala b/src/main/scala/li/cil/oc/integration/forestry/DriverAnalyzer.scala
index a56e3b03b..14577eb99 100644
--- a/src/main/scala/li/cil/oc/integration/forestry/DriverAnalyzer.scala
+++ b/src/main/scala/li/cil/oc/integration/forestry/DriverAnalyzer.scala
@@ -6,15 +6,16 @@ import li.cil.oc.api.driver.NamedBlock
import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ResultWrapper._
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-class DriverAnalyzer extends DriverTileEntity {
+class DriverAnalyzer extends DriverSidedTileEntity {
override def getTileEntityClass = classOf[TileAnalyzer]
- override def createEnvironment(world: World, x: Int, y: Int, z: Int) = new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileAnalyzer])
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection) = new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileAnalyzer])
final class Environment(tileEntity: TileAnalyzer) extends ManagedTileEntityEnvironment[TileAnalyzer](tileEntity, "forestry_analyzer") with NamedBlock {
override def preferredName = "forestry_analyzer"
diff --git a/src/main/scala/li/cil/oc/integration/forestry/DriverBeeHouse.java b/src/main/scala/li/cil/oc/integration/forestry/DriverBeeHouse.java
index 462c27837..03e1f9781 100644
--- a/src/main/scala/li/cil/oc/integration/forestry/DriverBeeHouse.java
+++ b/src/main/scala/li/cil/oc/integration/forestry/DriverBeeHouse.java
@@ -11,23 +11,24 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
-public class DriverBeeHouse extends DriverTileEntity {
+public class DriverBeeHouse extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IBeeHousing.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IBeeHousing) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/gregtech/DriverEnergyContainer.java b/src/main/scala/li/cil/oc/integration/gregtech/DriverEnergyContainer.java
index 19fc6ae82..e1e80660a 100644
--- a/src/main/scala/li/cil/oc/integration/gregtech/DriverEnergyContainer.java
+++ b/src/main/scala/li/cil/oc/integration/gregtech/DriverEnergyContainer.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnergyContainer extends DriverTileEntity {
+public final class DriverEnergyContainer extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IBasicEnergyContainer.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IBasicEnergyContainer) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/ic2/DriverEnergyConductor.java b/src/main/scala/li/cil/oc/integration/ic2/DriverEnergyConductor.java
index c4470c271..52dafdd3a 100644
--- a/src/main/scala/li/cil/oc/integration/ic2/DriverEnergyConductor.java
+++ b/src/main/scala/li/cil/oc/integration/ic2/DriverEnergyConductor.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnergyConductor extends DriverTileEntity {
+public final class DriverEnergyConductor extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IEnergyConductor.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IEnergyConductor) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/ic2/DriverEnergySink.java b/src/main/scala/li/cil/oc/integration/ic2/DriverEnergySink.java
index 021cb6967..08d7402d4 100644
--- a/src/main/scala/li/cil/oc/integration/ic2/DriverEnergySink.java
+++ b/src/main/scala/li/cil/oc/integration/ic2/DriverEnergySink.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnergySink extends DriverTileEntity {
+public final class DriverEnergySink extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IEnergySink.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IEnergySink) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/ic2/DriverEnergySource.java b/src/main/scala/li/cil/oc/integration/ic2/DriverEnergySource.java
index 14e607898..52d8aea14 100644
--- a/src/main/scala/li/cil/oc/integration/ic2/DriverEnergySource.java
+++ b/src/main/scala/li/cil/oc/integration/ic2/DriverEnergySource.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnergySource extends DriverTileEntity {
+public final class DriverEnergySource extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IEnergySource.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IEnergySource) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/ic2/DriverEnergyStorage.java b/src/main/scala/li/cil/oc/integration/ic2/DriverEnergyStorage.java
index 1673c2d74..f5d579eca 100644
--- a/src/main/scala/li/cil/oc/integration/ic2/DriverEnergyStorage.java
+++ b/src/main/scala/li/cil/oc/integration/ic2/DriverEnergyStorage.java
@@ -5,18 +5,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverEnergyStorage extends DriverTileEntity {
+public final class DriverEnergyStorage extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IEnergyStorage.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IEnergyStorage) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/ic2/DriverMassFab.java b/src/main/scala/li/cil/oc/integration/ic2/DriverMassFab.java
index 86c9b57d7..0aca773c7 100644
--- a/src/main/scala/li/cil/oc/integration/ic2/DriverMassFab.java
+++ b/src/main/scala/li/cil/oc/integration/ic2/DriverMassFab.java
@@ -5,19 +5,20 @@ import li.cil.oc.api.driver.NamedBlock;
import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.api.prefab.ManagedEnvironment;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverMassFab extends DriverTileEntity {
+public final class DriverMassFab extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return TileEntityMatter.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((TileEntityMatter) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/ic2/DriverReactor.java b/src/main/scala/li/cil/oc/integration/ic2/DriverReactor.java
index 19afb1b32..536a449db 100644
--- a/src/main/scala/li/cil/oc/integration/ic2/DriverReactor.java
+++ b/src/main/scala/li/cil/oc/integration/ic2/DriverReactor.java
@@ -7,18 +7,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverReactor extends DriverTileEntity {
+public final class DriverReactor extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IReactor.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IReactor) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/ic2/DriverReactorChamber.java b/src/main/scala/li/cil/oc/integration/ic2/DriverReactorChamber.java
index 2e46bce7f..b1768d6db 100644
--- a/src/main/scala/li/cil/oc/integration/ic2/DriverReactorChamber.java
+++ b/src/main/scala/li/cil/oc/integration/ic2/DriverReactorChamber.java
@@ -7,18 +7,19 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverReactorChamber extends DriverTileEntity {
+public final class DriverReactorChamber extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IReactorChamber.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IReactorChamber) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/railcraft/DriverBoilerFirebox.java b/src/main/scala/li/cil/oc/integration/railcraft/DriverBoilerFirebox.java
index b051fbd7d..dc1006e59 100644
--- a/src/main/scala/li/cil/oc/integration/railcraft/DriverBoilerFirebox.java
+++ b/src/main/scala/li/cil/oc/integration/railcraft/DriverBoilerFirebox.java
@@ -5,14 +5,15 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import mods.railcraft.common.blocks.machine.beta.TileBoilerFirebox;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public class DriverBoilerFirebox extends DriverTileEntity {
+public class DriverBoilerFirebox extends DriverSidedTileEntity {
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((TileBoilerFirebox) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/railcraft/DriverSteamTurbine.java b/src/main/scala/li/cil/oc/integration/railcraft/DriverSteamTurbine.java
index 4b14497b8..262f5accb 100644
--- a/src/main/scala/li/cil/oc/integration/railcraft/DriverSteamTurbine.java
+++ b/src/main/scala/li/cil/oc/integration/railcraft/DriverSteamTurbine.java
@@ -5,21 +5,22 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import mods.railcraft.common.blocks.machine.alpha.TileSteamTurbine;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverSteamTurbine extends DriverTileEntity {
+public final class DriverSteamTurbine extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return TileSteamTurbine.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((TileSteamTurbine) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/thaumcraft/DriverAspectContainer.java b/src/main/scala/li/cil/oc/integration/thaumcraft/DriverAspectContainer.java
index 3d71bb357..d257db45a 100644
--- a/src/main/scala/li/cil/oc/integration/thaumcraft/DriverAspectContainer.java
+++ b/src/main/scala/li/cil/oc/integration/thaumcraft/DriverAspectContainer.java
@@ -5,16 +5,17 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.aspects.IAspectContainer;
-public class DriverAspectContainer extends DriverTileEntity {
+public class DriverAspectContainer extends DriverSidedTileEntity {
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IAspectContainer) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/thaumicenergistics/DriverBlockInterface.scala b/src/main/scala/li/cil/oc/integration/thaumicenergistics/DriverBlockInterface.scala
index 3ee7429c3..068956bd0 100644
--- a/src/main/scala/li/cil/oc/integration/thaumicenergistics/DriverBlockInterface.scala
+++ b/src/main/scala/li/cil/oc/integration/thaumicenergistics/DriverBlockInterface.scala
@@ -3,16 +3,17 @@ package li.cil.oc.integration.thaumicenergistics
import appeng.tile.misc.TileInterface
import li.cil.oc.api.driver.EnvironmentProvider
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.integration.appeng.AEUtil
import net.minecraft.item.ItemStack
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-object DriverBlockInterface extends DriverTileEntity {
+object DriverBlockInterface extends DriverSidedTileEntity {
def getTileEntityClass: Class[_] = classOf[TileInterface]
- def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileInterface])
final class Environment(val tile: TileInterface) extends ManagedTileEntityEnvironment[TileInterface](tile, "me_interface") with NetworkControl[TileInterface]
diff --git a/src/main/scala/li/cil/oc/integration/thaumicenergistics/DriverController.scala b/src/main/scala/li/cil/oc/integration/thaumicenergistics/DriverController.scala
index 8a0e90053..6a9e26597 100644
--- a/src/main/scala/li/cil/oc/integration/thaumicenergistics/DriverController.scala
+++ b/src/main/scala/li/cil/oc/integration/thaumicenergistics/DriverController.scala
@@ -4,21 +4,22 @@ import appeng.api.networking.security.IActionHost
import appeng.me.helpers.IGridProxyable
import li.cil.oc.api.driver.EnvironmentProvider
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.integration.appeng.AEUtil
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntity
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
import scala.language.existentials
-object DriverController extends DriverTileEntity {
+object DriverController extends DriverSidedTileEntity {
private type TileController = TileEntity with IGridProxyable with IActionHost
def getTileEntityClass = AEUtil.controllerClass
- def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileController])
final class Environment(val tile: TileController) extends ManagedTileEntityEnvironment[TileController](tile, "me_controller") with NetworkControl[TileController]
diff --git a/src/main/scala/li/cil/oc/integration/thermalexpansion/DriverLamp.java b/src/main/scala/li/cil/oc/integration/thermalexpansion/DriverLamp.java
index 155fcdf13..3bd882f98 100644
--- a/src/main/scala/li/cil/oc/integration/thermalexpansion/DriverLamp.java
+++ b/src/main/scala/li/cil/oc/integration/thermalexpansion/DriverLamp.java
@@ -3,14 +3,15 @@ package li.cil.oc.integration.thermalexpansion;
import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.api.prefab.ManagedEnvironment;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import li.cil.oc.util.Reflection;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
-public final class DriverLamp extends DriverTileEntity {
+public final class DriverLamp extends DriverSidedTileEntity {
private static final Class> TileLamp = Reflection.getClass("thermalexpansion.block.lamp.TileLamp");
@Override
@@ -19,7 +20,7 @@ public final class DriverLamp extends DriverTileEntity {
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment(world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/tmechworks/DriverDrawBridge.java b/src/main/scala/li/cil/oc/integration/tmechworks/DriverDrawBridge.java
index 3eb2d6efe..0ac57b878 100644
--- a/src/main/scala/li/cil/oc/integration/tmechworks/DriverDrawBridge.java
+++ b/src/main/scala/li/cil/oc/integration/tmechworks/DriverDrawBridge.java
@@ -4,19 +4,20 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
import tmechworks.lib.blocks.IDrawbridgeLogicBase;
-public class DriverDrawBridge extends DriverTileEntity {
+public class DriverDrawBridge extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IDrawbridgeLogicBase.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IDrawbridgeLogicBase) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/vanilla/DriverBeacon.scala b/src/main/scala/li/cil/oc/integration/vanilla/DriverBeacon.scala
index c283df7cd..c5102fccc 100644
--- a/src/main/scala/li/cil/oc/integration/vanilla/DriverBeacon.scala
+++ b/src/main/scala/li/cil/oc/integration/vanilla/DriverBeacon.scala
@@ -6,7 +6,7 @@ import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ResultWrapper.result
import net.minecraft.block.Block
@@ -15,11 +15,12 @@ import net.minecraft.item.ItemStack
import net.minecraft.potion.Potion
import net.minecraft.tileentity.TileEntityBeacon
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-object DriverBeacon extends DriverTileEntity {
+object DriverBeacon extends DriverSidedTileEntity {
override def getTileEntityClass: Class[_] = classOf[TileEntityBeacon]
- override def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileEntityBeacon])
final class Environment(tileEntity: TileEntityBeacon) extends ManagedTileEntityEnvironment[TileEntityBeacon](tileEntity, "beacon") with NamedBlock {
diff --git a/src/main/scala/li/cil/oc/integration/vanilla/DriverBrewingStand.scala b/src/main/scala/li/cil/oc/integration/vanilla/DriverBrewingStand.scala
index bbb8f7001..1acd30c0a 100644
--- a/src/main/scala/li/cil/oc/integration/vanilla/DriverBrewingStand.scala
+++ b/src/main/scala/li/cil/oc/integration/vanilla/DriverBrewingStand.scala
@@ -6,18 +6,19 @@ import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ResultWrapper.result
import net.minecraft.init.Items
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntityBrewingStand
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-object DriverBrewingStand extends DriverTileEntity {
+object DriverBrewingStand extends DriverSidedTileEntity {
override def getTileEntityClass: Class[_] = classOf[TileEntityBrewingStand]
- override def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileEntityBrewingStand])
final class Environment(tileEntity: TileEntityBrewingStand) extends ManagedTileEntityEnvironment[TileEntityBrewingStand](tileEntity, "brewing_stand") with NamedBlock {
diff --git a/src/main/scala/li/cil/oc/integration/vanilla/DriverCommandBlock.scala b/src/main/scala/li/cil/oc/integration/vanilla/DriverCommandBlock.scala
index f7e2f31d1..b77211140 100644
--- a/src/main/scala/li/cil/oc/integration/vanilla/DriverCommandBlock.scala
+++ b/src/main/scala/li/cil/oc/integration/vanilla/DriverCommandBlock.scala
@@ -6,7 +6,7 @@ import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ResultWrapper.result
import net.minecraft.block.Block
@@ -15,11 +15,12 @@ import net.minecraft.item.ItemStack
import net.minecraft.server.MinecraftServer
import net.minecraft.tileentity.TileEntityCommandBlock
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-object DriverCommandBlock extends DriverTileEntity {
+object DriverCommandBlock extends DriverSidedTileEntity {
override def getTileEntityClass: Class[_] = classOf[TileEntityCommandBlock]
- override def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileEntityCommandBlock])
final class Environment(tileEntity: TileEntityCommandBlock) extends ManagedTileEntityEnvironment[TileEntityCommandBlock](tileEntity, "command_block") with NamedBlock {
diff --git a/src/main/scala/li/cil/oc/integration/vanilla/DriverComparator.scala b/src/main/scala/li/cil/oc/integration/vanilla/DriverComparator.scala
index 6a75823c6..5e6472cb6 100644
--- a/src/main/scala/li/cil/oc/integration/vanilla/DriverComparator.scala
+++ b/src/main/scala/li/cil/oc/integration/vanilla/DriverComparator.scala
@@ -6,18 +6,19 @@ import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ResultWrapper.result
import net.minecraft.init.Items
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntityComparator
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-object DriverComparator extends DriverTileEntity {
+object DriverComparator extends DriverSidedTileEntity {
override def getTileEntityClass: Class[_] = classOf[TileEntityComparator]
- override def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileEntityComparator])
final class Environment(tileEntity: TileEntityComparator) extends ManagedTileEntityEnvironment[TileEntityComparator](tileEntity, "comparator") with NamedBlock {
diff --git a/src/main/scala/li/cil/oc/integration/vanilla/DriverFluidHandler.java b/src/main/scala/li/cil/oc/integration/vanilla/DriverFluidHandler.java
index c636b1753..6ad90e0b8 100644
--- a/src/main/scala/li/cil/oc/integration/vanilla/DriverFluidHandler.java
+++ b/src/main/scala/li/cil/oc/integration/vanilla/DriverFluidHandler.java
@@ -4,20 +4,20 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.IFluidHandler;
-public final class DriverFluidHandler extends DriverTileEntity {
+public final class DriverFluidHandler extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IFluidHandler.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IFluidHandler) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/vanilla/DriverFluidTank.java b/src/main/scala/li/cil/oc/integration/vanilla/DriverFluidTank.java
index 2c302edb6..b73c830fb 100644
--- a/src/main/scala/li/cil/oc/integration/vanilla/DriverFluidTank.java
+++ b/src/main/scala/li/cil/oc/integration/vanilla/DriverFluidTank.java
@@ -4,19 +4,20 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.IFluidTank;
-public final class DriverFluidTank extends DriverTileEntity {
+public final class DriverFluidTank extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IFluidTank.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment((IFluidTank) world.getTileEntity(x, y, z));
}
diff --git a/src/main/scala/li/cil/oc/integration/vanilla/DriverFurnace.scala b/src/main/scala/li/cil/oc/integration/vanilla/DriverFurnace.scala
index d4acfa2f2..54e9a8a8d 100644
--- a/src/main/scala/li/cil/oc/integration/vanilla/DriverFurnace.scala
+++ b/src/main/scala/li/cil/oc/integration/vanilla/DriverFurnace.scala
@@ -6,7 +6,7 @@ import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ResultWrapper.result
import net.minecraft.block.Block
@@ -14,11 +14,12 @@ import net.minecraft.init.Blocks
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntityFurnace
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-object DriverFurnace extends DriverTileEntity {
+object DriverFurnace extends DriverSidedTileEntity {
override def getTileEntityClass: Class[_] = classOf[TileEntityFurnace]
- override def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileEntityFurnace])
final class Environment(tileEntity: TileEntityFurnace) extends ManagedTileEntityEnvironment[TileEntityFurnace](tileEntity, "furnace") with NamedBlock {
diff --git a/src/main/scala/li/cil/oc/integration/vanilla/DriverInventory.java b/src/main/scala/li/cil/oc/integration/vanilla/DriverInventory.java
index cde412eeb..9fcb0b925 100644
--- a/src/main/scala/li/cil/oc/integration/vanilla/DriverInventory.java
+++ b/src/main/scala/li/cil/oc/integration/vanilla/DriverInventory.java
@@ -6,7 +6,7 @@ import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.ManagedEnvironment;
-import li.cil.oc.api.prefab.DriverTileEntity;
+import li.cil.oc.api.prefab.DriverSidedTileEntity;
import li.cil.oc.integration.ManagedTileEntityEnvironment;
import li.cil.oc.util.BlockPosition;
import net.minecraft.entity.player.EntityPlayer;
@@ -16,17 +16,18 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.util.FakePlayerFactory;
+import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.event.ForgeEventFactory;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
-public final class DriverInventory extends DriverTileEntity {
+public final class DriverInventory extends DriverSidedTileEntity {
@Override
public Class> getTileEntityClass() {
return IInventory.class;
}
@Override
- public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) {
+ public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z, final ForgeDirection side) {
return new Environment(world.getTileEntity(x, y, z), world);
}
diff --git a/src/main/scala/li/cil/oc/integration/vanilla/DriverMobSpawner.scala b/src/main/scala/li/cil/oc/integration/vanilla/DriverMobSpawner.scala
index 1e489f7ff..db9431df3 100644
--- a/src/main/scala/li/cil/oc/integration/vanilla/DriverMobSpawner.scala
+++ b/src/main/scala/li/cil/oc/integration/vanilla/DriverMobSpawner.scala
@@ -6,7 +6,7 @@ import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ResultWrapper.result
import net.minecraft.block.Block
@@ -14,11 +14,12 @@ import net.minecraft.init.Blocks
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntityMobSpawner
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-object DriverMobSpawner extends DriverTileEntity {
+object DriverMobSpawner extends DriverSidedTileEntity {
override def getTileEntityClass: Class[_] = classOf[TileEntityMobSpawner]
- override def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileEntityMobSpawner])
final class Environment(tileEntity: TileEntityMobSpawner) extends ManagedTileEntityEnvironment[TileEntityMobSpawner](tileEntity, "mob_spawner") with NamedBlock {
diff --git a/src/main/scala/li/cil/oc/integration/vanilla/DriverNoteBlock.scala b/src/main/scala/li/cil/oc/integration/vanilla/DriverNoteBlock.scala
index d236745bf..a01d1d10b 100644
--- a/src/main/scala/li/cil/oc/integration/vanilla/DriverNoteBlock.scala
+++ b/src/main/scala/li/cil/oc/integration/vanilla/DriverNoteBlock.scala
@@ -6,7 +6,7 @@ import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ResultWrapper.result
import net.minecraft.block.Block
@@ -15,11 +15,12 @@ import net.minecraft.init.Blocks
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.TileEntityNote
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-object DriverNoteBlock extends DriverTileEntity {
+object DriverNoteBlock extends DriverSidedTileEntity {
override def getTileEntityClass: Class[_] = classOf[TileEntityNote]
- override def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment =
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment =
new Environment(world.getTileEntity(x, y, z).asInstanceOf[TileEntityNote])
final class Environment(tileEntity: TileEntityNote) extends ManagedTileEntityEnvironment[TileEntityNote](tileEntity, "note_block") with NamedBlock {
diff --git a/src/main/scala/li/cil/oc/integration/vanilla/DriverRecordPlayer.scala b/src/main/scala/li/cil/oc/integration/vanilla/DriverRecordPlayer.scala
index 7d406db80..84f17b8fb 100644
--- a/src/main/scala/li/cil/oc/integration/vanilla/DriverRecordPlayer.scala
+++ b/src/main/scala/li/cil/oc/integration/vanilla/DriverRecordPlayer.scala
@@ -6,7 +6,7 @@ import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.ManagedEnvironment
-import li.cil.oc.api.prefab.DriverTileEntity
+import li.cil.oc.api.prefab.DriverSidedTileEntity
import li.cil.oc.integration.ManagedTileEntityEnvironment
import li.cil.oc.util.ResultWrapper.result
import net.minecraft.block.Block
@@ -16,11 +16,12 @@ import net.minecraft.item.Item
import net.minecraft.item.ItemRecord
import net.minecraft.item.ItemStack
import net.minecraft.world.World
+import net.minecraftforge.common.util.ForgeDirection
-object DriverRecordPlayer extends DriverTileEntity {
+object DriverRecordPlayer extends DriverSidedTileEntity {
override def getTileEntityClass: Class[_] = classOf[BlockJukebox.TileEntityJukebox]
- override def createEnvironment(world: World, x: Int, y: Int, z: Int): ManagedEnvironment = new Environment(world.getTileEntity(x, y, z).asInstanceOf[BlockJukebox.TileEntityJukebox])
+ override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment = new Environment(world.getTileEntity(x, y, z).asInstanceOf[BlockJukebox.TileEntityJukebox])
final class Environment(tileEntity: BlockJukebox.TileEntityJukebox) extends ManagedTileEntityEnvironment[BlockJukebox.TileEntityJukebox](tileEntity, "jukebox") with NamedBlock {
override def preferredName = "jukebox"