Fixed sided connectivity of disk drive.
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user