diff --git a/src/main/java/li/cil/oc2/api/bus/device/Device.java b/src/main/java/li/cil/oc2/api/bus/device/Device.java index 62435476..0117383c 100644 --- a/src/main/java/li/cil/oc2/api/bus/device/Device.java +++ b/src/main/java/li/cil/oc2/api/bus/device/Device.java @@ -3,6 +3,7 @@ package li.cil.oc2.api.bus.device; import li.cil.oc2.api.bus.DeviceBus; import li.cil.oc2.api.bus.DeviceBusController; import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.common.util.INBTSerializable; /** @@ -11,6 +12,8 @@ import net.minecraftforge.common.util.INBTSerializable; * Which types are handled/supported by a bus depends on context of the {@link DeviceBusController} * managing the bus. *
+ * May be provided as a capability on {@link BlockEntity}s. + *
* Note that it is strongly encouraged for implementations to provide an overloaded
* {@link Object#equals(Object)} and {@link Object#hashCode()} so that identical devices can be
* detected.
diff --git a/src/main/java/li/cil/oc2/common/bus/device/provider/Providers.java b/src/main/java/li/cil/oc2/common/bus/device/provider/Providers.java
index 69111f39..76cad8e8 100644
--- a/src/main/java/li/cil/oc2/common/bus/device/provider/Providers.java
+++ b/src/main/java/li/cil/oc2/common/bus/device/provider/Providers.java
@@ -25,6 +25,7 @@ public final class Providers {
public static void initialize() {
BLOCK_DEVICE_PROVIDERS.register("block", BlockStateDeviceProvider::new);
BLOCK_DEVICE_PROVIDERS.register("block_entity", BlockEntityDeviceProvider::new);
+ BLOCK_DEVICE_PROVIDERS.register("block_entity/capability", BlockEntityCapabilityDeviceProvider::new);
BLOCK_DEVICE_PROVIDERS.register("energy_storage", EnergyStorageBlockDeviceProvider::new);
BLOCK_DEVICE_PROVIDERS.register("fluid_handler", FluidHandlerBlockDeviceProvider::new);
diff --git a/src/main/java/li/cil/oc2/common/bus/device/provider/block/BlockEntityCapabilityDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/provider/block/BlockEntityCapabilityDeviceProvider.java
new file mode 100644
index 00000000..aa653222
--- /dev/null
+++ b/src/main/java/li/cil/oc2/common/bus/device/provider/block/BlockEntityCapabilityDeviceProvider.java
@@ -0,0 +1,19 @@
+package li.cil.oc2.common.bus.device.provider.block;
+
+import li.cil.oc2.api.bus.device.Device;
+import li.cil.oc2.api.bus.device.provider.BlockDeviceQuery;
+import li.cil.oc2.api.util.Invalidatable;
+import li.cil.oc2.common.bus.device.provider.util.AbstractBlockEntityCapabilityDeviceProvider;
+import li.cil.oc2.common.capabilities.Capabilities;
+import net.minecraft.world.level.block.entity.BlockEntity;
+
+public final class BlockEntityCapabilityDeviceProvider extends AbstractBlockEntityCapabilityDeviceProvider