Fixed sided connectivity of disk drive.

This commit is contained in:
Florian Nücke
2022-01-25 18:23:55 +01:00
parent 6c96c096ac
commit b6a06c9185

View File

@@ -3,10 +3,11 @@ 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.block.DiskDriveBlock;
import li.cil.oc2.common.blockentity.BlockEntities;
import li.cil.oc2.common.blockentity.DiskDriveBlockEntity;
import li.cil.oc2.common.bus.device.provider.util.AbstractBlockEntityDeviceProvider;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.core.Direction;
public final class DiskDriveDeviceProvider extends AbstractBlockEntityDeviceProvider<DiskDriveBlockEntity> {
public DiskDriveDeviceProvider() {
@@ -17,10 +18,11 @@ public final class DiskDriveDeviceProvider extends AbstractBlockEntityDeviceProv
protected Invalidatable<Device> getBlockDevice(final BlockDeviceQuery query, final DiskDriveBlockEntity blockEntity) {
// We only allow connecting to exactly one face of the disk drive to ensure only one
// bus (and thus, one VM) will access the device at any single time.
if (query.getQuerySide() == blockEntity.getBlockState().getValue(HorizontalDirectionalBlock.FACING)) {
final Direction blockFacing = blockEntity.getBlockState().getValue(DiskDriveBlock.FACING);
if (query.getQuerySide() == blockFacing.getOpposite()) {
return Invalidatable.of(blockEntity.getDevice());
} else {
return Invalidatable.empty();
}
return Invalidatable.of(blockEntity.getDevice());
}
}