diff --git a/src/main/java/li/cil/oc2/api/bus/BlockDeviceBusElement.java b/src/main/java/li/cil/oc2/api/bus/BlockDeviceBusElement.java new file mode 100644 index 00000000..8be393d3 --- /dev/null +++ b/src/main/java/li/cil/oc2/api/bus/BlockDeviceBusElement.java @@ -0,0 +1,21 @@ +package li.cil.oc2.api.bus; + +import net.minecraft.util.math.BlockPos; + +/** + * Implementing this interface allows providing positional information to the {@link DeviceBusController}. + *
+ * Controllers may use this information to automatically trigger bus scans when the chunk containing
+ * this element or a chunk adjacent to it gets unloaded / loaded. This convenience allows not having
+ * to implement logic in bus element implementations to trigger such scans themselves.
+ */
+public interface BlockDeviceBusElement extends DeviceBusElement {
+ // TODO Do we want to support multi-dimensional buses? (have a getWorld)
+
+ /**
+ * The position of this bus element.
+ *
+ * @return the position of this bus element.
+ */
+ BlockPos getPosition();
+}
diff --git a/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java b/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java
index e736e9cd..edce2fc2 100644
--- a/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java
+++ b/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java
@@ -1,5 +1,6 @@
package li.cil.oc2.common.bus;
+import li.cil.oc2.api.bus.BlockDeviceBusElement;
import li.cil.oc2.api.bus.DeviceBus;
import li.cil.oc2.api.bus.DeviceBusElement;
import li.cil.oc2.common.bus.device.BlockDeviceInfo;
@@ -22,7 +23,7 @@ import java.util.Optional;
import static java.util.Objects.requireNonNull;
-public class TileEntityDeviceBusElement extends AbstractGroupingBlockDeviceBusElement {
+public class TileEntityDeviceBusElement extends AbstractGroupingBlockDeviceBusElement implements BlockDeviceBusElement {
private static final int NEIGHBOR_COUNT = 6;
final Direction[] NEIGHBOR_DIRECTIONS = Direction.values();
@@ -39,6 +40,11 @@ public class TileEntityDeviceBusElement extends AbstractGroupingBlockDeviceBusEl
///////////////////////////////////////////////////////////////////
+ @Override
+ public BlockPos getPosition() {
+ return tileEntity.getPos();
+ }
+
@Override
public Optional