From 24e837192a6817bdb681c69e8f02c6505ca0b921 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Wed, 9 Feb 2022 17:31:48 +0100 Subject: [PATCH] One level of indirection for capabilities for tests. --- .../cil/oc2/common/block/ComputerBlock.java | 2 +- .../blockentity/BusCableBlockEntity.java | 6 +-- .../blockentity/ChargerBlockEntity.java | 8 +-- .../blockentity/ComputerBlockEntity.java | 8 +-- .../CreativeEnergyBlockEntity.java | 2 +- .../blockentity/DiskDriveBlockEntity.java | 4 +- .../blockentity/KeyboardBlockEntity.java | 2 +- .../NetworkConnectorBlockEntity.java | 4 +- .../blockentity/NetworkHubBlockEntity.java | 4 +- .../blockentity/ProjectorBlockEntity.java | 4 +- .../bus/AbstractBlockDeviceBusElement.java | 2 +- .../BlockEntityCapabilityDeviceProvider.java | 2 +- .../BlockOperationsModuleDeviceProvider.java | 2 +- .../item/EnergyStorageItemDeviceProvider.java | 2 +- ...ileImportExportCardItemDeviceProvider.java | 4 +- .../item/FluidHandlerItemDeviceProvider.java | 2 +- ...ventoryOperationsModuleDeviceProvider.java | 2 +- .../item/ItemHandlerItemDeviceProvider.java | 2 +- .../ItemStackCapabilityDeviceProvider.java | 2 +- .../EnergyStorageBlockDeviceProvider.java | 2 +- .../FluidHandlerBlockDeviceProvider.java | 2 +- .../block/ItemHandlerBlockDeviceProvider.java | 2 +- .../item/InventoryOperationsModuleDevice.java | 4 +- .../item/RedstoneInterfaceCardItemDevice.java | 2 +- .../item/AbstractNetworkInterfaceDevice.java | 2 +- .../oc2/common/capabilities/Capabilities.java | 53 +++++++++++-------- .../capabilities/CapabilityRegistry.java | 43 +++++++++++++++ .../common/energy/EnergyStorageItemStack.java | 6 +-- .../java/li/cil/oc2/common/entity/Robot.java | 6 +-- .../li/cil/oc2/common/util/TooltipUtils.java | 2 +- 30 files changed, 118 insertions(+), 70 deletions(-) create mode 100644 src/main/java/li/cil/oc2/common/capabilities/CapabilityRegistry.java diff --git a/src/main/java/li/cil/oc2/common/block/ComputerBlock.java b/src/main/java/li/cil/oc2/common/block/ComputerBlock.java index 975d992e..502fe676 100644 --- a/src/main/java/li/cil/oc2/common/block/ComputerBlock.java +++ b/src/main/java/li/cil/oc2/common/block/ComputerBlock.java @@ -109,7 +109,7 @@ public final class ComputerBlock extends HorizontalDirectionalBlock implements E if (blockEntity != null) { // Redstone requests info for faces with external perspective. Capabilities treat // the Direction from internal perspective, so flip it. - return blockEntity.getCapability(Capabilities.REDSTONE_EMITTER, side.getOpposite()) + return blockEntity.getCapability(Capabilities.redstoneEmitter(), side.getOpposite()) .map(RedstoneEmitter::getRedstoneOutput) .orElse(0); } diff --git a/src/main/java/li/cil/oc2/common/blockentity/BusCableBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/BusCableBlockEntity.java index efd83116..4e828e39 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/BusCableBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/BusCableBlockEntity.java @@ -179,7 +179,7 @@ public final class BusCableBlockEntity extends ModBlockEntity { // we can just do this. setInterfaceName(side, ""); - invalidateCapability(Capabilities.DEVICE_BUS_ELEMENT, side); + invalidateCapability(Capabilities.deviceBusElement(), side); final NeighborTracker tracker = neighborTrackers[side.get3DDataValue()]; tracker.updateListener(); @@ -229,7 +229,7 @@ public final class BusCableBlockEntity extends ModBlockEntity { @Override protected void collectCapabilities(final CapabilityCollector collector, @Nullable final Direction direction) { if (BusCableBlock.getConnectionType(getBlockState(), direction) != BusCableBlock.ConnectionType.NONE) { - collector.offer(Capabilities.DEVICE_BUS_ELEMENT, busElement); + collector.offer(Capabilities.deviceBusElement(), busElement); } } @@ -303,7 +303,7 @@ public final class BusCableBlockEntity extends ModBlockEntity { } final LazyOptional capability = blockEntity - .getCapability(Capabilities.DEVICE_BUS_ELEMENT, direction.getOpposite()); + .getCapability(Capabilities.deviceBusElement(), direction.getOpposite()); capability.ifPresent(DeviceBus::scheduleScan); } }); diff --git a/src/main/java/li/cil/oc2/common/blockentity/ChargerBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/ChargerBlockEntity.java index 0985552e..6c7015f3 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/ChargerBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/ChargerBlockEntity.java @@ -99,7 +99,7 @@ public final class ChargerBlockEntity extends ModBlockEntity implements NamedDev @Override protected void collectCapabilities(final CapabilityCollector collector, @Nullable final Direction direction) { - collector.offer(Capabilities.ENERGY_STORAGE, energy); + collector.offer(Capabilities.energyStorage(), energy); } /////////////////////////////////////////////////////////////////// @@ -131,15 +131,15 @@ public final class ChargerBlockEntity extends ModBlockEntity implements NamedDev } private void chargeCapabilityProvider(final ICapabilityProvider capabilityProvider) { - capabilityProvider.getCapability(Capabilities.ENERGY_STORAGE, Direction.DOWN).ifPresent(this::charge); - capabilityProvider.getCapability(Capabilities.ITEM_HANDLER, Direction.DOWN).ifPresent(this::chargeItems); + capabilityProvider.getCapability(Capabilities.energyStorage(), Direction.DOWN).ifPresent(this::charge); + capabilityProvider.getCapability(Capabilities.itemHandler(), Direction.DOWN).ifPresent(this::chargeItems); } private void chargeItems(final IItemHandler itemHandler) { for (int slot = 0; slot < itemHandler.getSlots(); slot++) { final ItemStack stack = itemHandler.getStackInSlot(slot); if (!stack.isEmpty()) { - stack.getCapability(Capabilities.ENERGY_STORAGE).ifPresent(this::charge); + stack.getCapability(Capabilities.energyStorage()).ifPresent(this::charge); } } } diff --git a/src/main/java/li/cil/oc2/common/blockentity/ComputerBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/ComputerBlockEntity.java index c90ab30d..6c408317 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/ComputerBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/ComputerBlockEntity.java @@ -251,12 +251,12 @@ public final class ComputerBlockEntity extends ModBlockEntity implements Termina @Override protected void collectCapabilities(final CapabilityCollector collector, @Nullable final Direction direction) { - collector.offer(Capabilities.ITEM_HANDLER, deviceItems.combinedItemHandlers); - collector.offer(Capabilities.DEVICE_BUS_ELEMENT, busElement); - collector.offer(Capabilities.TERMINAL_USER_PROVIDER, this); + collector.offer(Capabilities.itemHandler(), deviceItems.combinedItemHandlers); + collector.offer(Capabilities.deviceBusElement(), busElement); + collector.offer(Capabilities.terminalUserProvider(), this); if (Config.computersUseEnergy()) { - collector.offer(Capabilities.ENERGY_STORAGE, energy); + collector.offer(Capabilities.energyStorage(), energy); } } diff --git a/src/main/java/li/cil/oc2/common/blockentity/CreativeEnergyBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/CreativeEnergyBlockEntity.java index 3cbc9332..f3a54e15 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/CreativeEnergyBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/CreativeEnergyBlockEntity.java @@ -30,7 +30,7 @@ public final class CreativeEnergyBlockEntity extends ModBlockEntity implements T if (level.hasChunk(neighborChunkPos.x, neighborChunkPos.z)) { final BlockEntity blockEntity = level.getBlockEntity(neighborPos); if (blockEntity != null) { - blockEntity.getCapability(Capabilities.ENERGY_STORAGE, side.getOpposite()).ifPresent(energy -> + blockEntity.getCapability(Capabilities.energyStorage(), side.getOpposite()).ifPresent(energy -> energy.receiveEnergy(Integer.MAX_VALUE, false)); } } diff --git a/src/main/java/li/cil/oc2/common/blockentity/DiskDriveBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/DiskDriveBlockEntity.java index 237784cc..b61eaeab 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/DiskDriveBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/DiskDriveBlockEntity.java @@ -102,10 +102,10 @@ public final class DiskDriveBlockEntity extends ModBlockEntity implements DiskDr @Override protected void collectCapabilities(final CapabilityCollector collector, @Nullable final Direction direction) { - collector.offer(Capabilities.ITEM_HANDLER, itemHandler); + collector.offer(Capabilities.itemHandler(), itemHandler); if (direction == getBlockState().getValue(DiskDriveBlock.FACING).getOpposite()) { - collector.offer(Capabilities.DEVICE, device); + collector.offer(Capabilities.device(), device); } } diff --git a/src/main/java/li/cil/oc2/common/blockentity/KeyboardBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/KeyboardBlockEntity.java index e698ecab..3bdebe25 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/KeyboardBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/KeyboardBlockEntity.java @@ -30,7 +30,7 @@ public final class KeyboardBlockEntity extends ModBlockEntity { @Override protected void collectCapabilities(final CapabilityCollector collector, @Nullable final Direction direction) { if (direction == Direction.DOWN) { - collector.offer(Capabilities.DEVICE, keyboardDevice); + collector.offer(Capabilities.device(), keyboardDevice); } } } diff --git a/src/main/java/li/cil/oc2/common/blockentity/NetworkConnectorBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/NetworkConnectorBlockEntity.java index 0bdcde63..5c046ad5 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/NetworkConnectorBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/NetworkConnectorBlockEntity.java @@ -276,7 +276,7 @@ public final class NetworkConnectorBlockEntity extends ModBlockEntity implements @Override protected void collectCapabilities(final CapabilityCollector collector, @Nullable final Direction direction) { if (direction == NetworkConnectorBlock.getFacing(getBlockState()).getOpposite()) { - collector.offer(Capabilities.NETWORK_INTERFACE, networkInterface); + collector.offer(Capabilities.networkInterface(), networkInterface); } } @@ -337,7 +337,7 @@ public final class NetworkConnectorBlockEntity extends ModBlockEntity implements return; } - adjacentInterface = blockEntity.getCapability(Capabilities.NETWORK_INTERFACE, facing); + adjacentInterface = blockEntity.getCapability(Capabilities.networkInterface(), facing); if (adjacentInterface.isPresent()) { LazyOptionalUtils.addWeakListener(adjacentInterface, this, (connector, unused) -> connector.setNeighborChanged()); } diff --git a/src/main/java/li/cil/oc2/common/blockentity/NetworkHubBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/NetworkHubBlockEntity.java index 8fa599ae..4de64c01 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/NetworkHubBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/NetworkHubBlockEntity.java @@ -56,7 +56,7 @@ public final class NetworkHubBlockEntity extends ModBlockEntity implements Netwo @Override protected void collectCapabilities(final CapabilityCollector collector, @Nullable final Direction direction) { - collector.offer(Capabilities.NETWORK_INTERFACE, this); + collector.offer(Capabilities.networkInterface(), this); } /////////////////////////////////////////////////////////////////// @@ -85,7 +85,7 @@ public final class NetworkHubBlockEntity extends ModBlockEntity implements Netwo for (final Direction side : Constants.DIRECTIONS) { final BlockEntity neighborBlockEntity = LevelUtils.getBlockEntityIfChunkExists(level, pos.relative(side)); if (neighborBlockEntity != null) { - final LazyOptional optional = neighborBlockEntity.getCapability(Capabilities.NETWORK_INTERFACE, side.getOpposite()); + final LazyOptional optional = neighborBlockEntity.getCapability(Capabilities.networkInterface(), side.getOpposite()); optional.ifPresent(adjacentInterface -> { adjacentBlockInterfaces[side.get3DDataValue()] = adjacentInterface; LazyOptionalUtils.addWeakListener(optional, this, (hub, unused) -> hub.handleNeighborChanged()); diff --git a/src/main/java/li/cil/oc2/common/blockentity/ProjectorBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/ProjectorBlockEntity.java index f7d2a4fc..2b7d9ada 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/ProjectorBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/ProjectorBlockEntity.java @@ -253,11 +253,11 @@ public final class ProjectorBlockEntity extends ModBlockEntity implements Tickab @Override protected void collectCapabilities(final CapabilityCollector collector, @Nullable final Direction direction) { if (Config.projectorsUseEnergy()) { - collector.offer(Capabilities.ENERGY_STORAGE, energy); + collector.offer(Capabilities.energyStorage(), energy); } if (direction == getBlockState().getValue(ProjectorBlock.FACING).getOpposite()) { - collector.offer(Capabilities.DEVICE, projectorDevice); + collector.offer(Capabilities.device(), projectorDevice); } } diff --git a/src/main/java/li/cil/oc2/common/bus/AbstractBlockDeviceBusElement.java b/src/main/java/li/cil/oc2/common/bus/AbstractBlockDeviceBusElement.java index 4404016a..3a860385 100644 --- a/src/main/java/li/cil/oc2/common/bus/AbstractBlockDeviceBusElement.java +++ b/src/main/java/li/cil/oc2/common/bus/AbstractBlockDeviceBusElement.java @@ -63,7 +63,7 @@ public abstract class AbstractBlockDeviceBusElement extends AbstractGroupingDevi continue; } - final LazyOptional capability = blockEntity.getCapability(Capabilities.DEVICE_BUS_ELEMENT, neighborDirection.getOpposite()); + final LazyOptional capability = blockEntity.getCapability(Capabilities.deviceBusElement(), neighborDirection.getOpposite()); if (capability.isPresent()) { neighbors.add(capability); } 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 index b363e705..a88254b4 100644 --- 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 @@ -11,7 +11,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; public final class BlockEntityCapabilityDeviceProvider extends AbstractBlockEntityCapabilityDeviceProvider { public BlockEntityCapabilityDeviceProvider() { - super(() -> Capabilities.DEVICE); + super(Capabilities::device); } /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/bus/device/provider/item/BlockOperationsModuleDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/provider/item/BlockOperationsModuleDeviceProvider.java index 0c73fa92..79c4a9a8 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/provider/item/BlockOperationsModuleDeviceProvider.java +++ b/src/main/java/li/cil/oc2/common/bus/device/provider/item/BlockOperationsModuleDeviceProvider.java @@ -22,7 +22,7 @@ public final class BlockOperationsModuleDeviceProvider extends AbstractItemDevic @Override protected Optional getItemDevice(final ItemDeviceQuery query) { return query.getContainerEntity().flatMap(entity -> - entity.getCapability(Capabilities.ROBOT).map(robot -> + entity.getCapability(Capabilities.robot()).map(robot -> new BlockOperationsModuleDevice(query.getItemStack(), entity, robot))); } diff --git a/src/main/java/li/cil/oc2/common/bus/device/provider/item/EnergyStorageItemDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/provider/item/EnergyStorageItemDeviceProvider.java index 0949b2f9..4c412dfe 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/provider/item/EnergyStorageItemDeviceProvider.java +++ b/src/main/java/li/cil/oc2/common/bus/device/provider/item/EnergyStorageItemDeviceProvider.java @@ -13,7 +13,7 @@ import java.util.Optional; public final class EnergyStorageItemDeviceProvider extends AbstractItemStackCapabilityDeviceProvider { public EnergyStorageItemDeviceProvider() { - super(() -> Capabilities.ENERGY_STORAGE); + super(Capabilities::energyStorage); } /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/bus/device/provider/item/FileImportExportCardItemDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/provider/item/FileImportExportCardItemDeviceProvider.java index acce075a..04018c5a 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/provider/item/FileImportExportCardItemDeviceProvider.java +++ b/src/main/java/li/cil/oc2/common/bus/device/provider/item/FileImportExportCardItemDeviceProvider.java @@ -42,7 +42,7 @@ public final class FileImportExportCardItemDeviceProvider extends AbstractItemDe private Optional getTerminalUserProvider(final ItemDeviceQuery query) { if (query.getContainerBlockEntity().isPresent()) { final LazyOptional capability = query.getContainerBlockEntity().get() - .getCapability(Capabilities.TERMINAL_USER_PROVIDER); + .getCapability(Capabilities.terminalUserProvider()); if (capability.isPresent()) { return capability.resolve(); } @@ -50,7 +50,7 @@ public final class FileImportExportCardItemDeviceProvider extends AbstractItemDe if (query.getContainerEntity().isPresent()) { final LazyOptional capability = query.getContainerEntity().get() - .getCapability(Capabilities.TERMINAL_USER_PROVIDER); + .getCapability(Capabilities.terminalUserProvider()); if (capability.isPresent()) { return capability.resolve(); } diff --git a/src/main/java/li/cil/oc2/common/bus/device/provider/item/FluidHandlerItemDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/provider/item/FluidHandlerItemDeviceProvider.java index 224e9be1..68700bdc 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/provider/item/FluidHandlerItemDeviceProvider.java +++ b/src/main/java/li/cil/oc2/common/bus/device/provider/item/FluidHandlerItemDeviceProvider.java @@ -13,7 +13,7 @@ import java.util.Optional; public final class FluidHandlerItemDeviceProvider extends AbstractItemStackCapabilityDeviceProvider { public FluidHandlerItemDeviceProvider() { - super(() -> Capabilities.FLUID_HANDLER); + super(Capabilities::fluidHandler); } /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/bus/device/provider/item/InventoryOperationsModuleDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/provider/item/InventoryOperationsModuleDeviceProvider.java index ef55469c..dad09f1b 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/provider/item/InventoryOperationsModuleDeviceProvider.java +++ b/src/main/java/li/cil/oc2/common/bus/device/provider/item/InventoryOperationsModuleDeviceProvider.java @@ -22,7 +22,7 @@ public final class InventoryOperationsModuleDeviceProvider extends AbstractItemD @Override protected Optional getItemDevice(final ItemDeviceQuery query) { return query.getContainerEntity().flatMap(entity -> - entity.getCapability(Capabilities.ROBOT).map(robot -> + entity.getCapability(Capabilities.robot()).map(robot -> new InventoryOperationsModuleDevice(query.getItemStack(), entity, robot))); } diff --git a/src/main/java/li/cil/oc2/common/bus/device/provider/item/ItemHandlerItemDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/provider/item/ItemHandlerItemDeviceProvider.java index e6958927..32e72a48 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/provider/item/ItemHandlerItemDeviceProvider.java +++ b/src/main/java/li/cil/oc2/common/bus/device/provider/item/ItemHandlerItemDeviceProvider.java @@ -13,7 +13,7 @@ import java.util.Optional; public final class ItemHandlerItemDeviceProvider extends AbstractItemStackCapabilityDeviceProvider { public ItemHandlerItemDeviceProvider() { - super(() -> Capabilities.ITEM_HANDLER); + super(Capabilities::itemHandler); } /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/bus/device/provider/item/ItemStackCapabilityDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/provider/item/ItemStackCapabilityDeviceProvider.java index 7671392f..84c4981e 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/provider/item/ItemStackCapabilityDeviceProvider.java +++ b/src/main/java/li/cil/oc2/common/bus/device/provider/item/ItemStackCapabilityDeviceProvider.java @@ -11,7 +11,7 @@ import java.util.Optional; public class ItemStackCapabilityDeviceProvider extends AbstractItemStackCapabilityDeviceProvider { public ItemStackCapabilityDeviceProvider() { - super(() -> Capabilities.DEVICE); + super(Capabilities::device); } /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/bus/device/rpc/block/EnergyStorageBlockDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/rpc/block/EnergyStorageBlockDeviceProvider.java index 57aecd32..5b68a060 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/rpc/block/EnergyStorageBlockDeviceProvider.java +++ b/src/main/java/li/cil/oc2/common/bus/device/rpc/block/EnergyStorageBlockDeviceProvider.java @@ -14,7 +14,7 @@ import net.minecraftforge.energy.IEnergyStorage; public final class EnergyStorageBlockDeviceProvider extends AbstractBlockEntityCapabilityDeviceProvider { public EnergyStorageBlockDeviceProvider() { - super(() -> Capabilities.ENERGY_STORAGE); + super(Capabilities::energyStorage); } /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/bus/device/rpc/block/FluidHandlerBlockDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/rpc/block/FluidHandlerBlockDeviceProvider.java index 40d14a67..a98de15d 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/rpc/block/FluidHandlerBlockDeviceProvider.java +++ b/src/main/java/li/cil/oc2/common/bus/device/rpc/block/FluidHandlerBlockDeviceProvider.java @@ -14,7 +14,7 @@ import net.minecraftforge.fluids.capability.IFluidHandler; public final class FluidHandlerBlockDeviceProvider extends AbstractBlockEntityCapabilityDeviceProvider { public FluidHandlerBlockDeviceProvider() { - super(() -> Capabilities.FLUID_HANDLER); + super(Capabilities::fluidHandler); } /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/bus/device/rpc/block/ItemHandlerBlockDeviceProvider.java b/src/main/java/li/cil/oc2/common/bus/device/rpc/block/ItemHandlerBlockDeviceProvider.java index a315ce93..037b9b63 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/rpc/block/ItemHandlerBlockDeviceProvider.java +++ b/src/main/java/li/cil/oc2/common/bus/device/rpc/block/ItemHandlerBlockDeviceProvider.java @@ -14,7 +14,7 @@ import net.minecraftforge.items.IItemHandler; public final class ItemHandlerBlockDeviceProvider extends AbstractBlockEntityCapabilityDeviceProvider { public ItemHandlerBlockDeviceProvider() { - super(() -> Capabilities.ITEM_HANDLER); + super(Capabilities::itemHandler); } /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/bus/device/rpc/item/InventoryOperationsModuleDevice.java b/src/main/java/li/cil/oc2/common/bus/device/rpc/item/InventoryOperationsModuleDevice.java index cd93898d..0ef6bd04 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/rpc/item/InventoryOperationsModuleDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/rpc/item/InventoryOperationsModuleDevice.java @@ -221,7 +221,7 @@ public final class InventoryOperationsModuleDevice extends AbstractItemRPCDevice private Stream getEntityItemHandlersAt(final Vec3 position, final Direction side) { final AABB bounds = AABB.unitCubeFromLowerCorner(position.subtract(0.5, 0.5, 0.5)); return entity.level.getEntities(entity, bounds).stream() - .map(e -> e.getCapability(Capabilities.ITEM_HANDLER, side)) + .map(e -> e.getCapability(Capabilities.itemHandler(), side)) .filter(LazyOptional::isPresent) .map(c -> c.orElseThrow(AssertionError::new)); } @@ -233,7 +233,7 @@ public final class InventoryOperationsModuleDevice extends AbstractItemRPCDevice return Stream.empty(); } - final LazyOptional capability = blockEntity.getCapability(Capabilities.ITEM_HANDLER, side); + final LazyOptional capability = blockEntity.getCapability(Capabilities.itemHandler(), side); if (capability.isPresent()) { return Stream.of(capability.orElseThrow(AssertionError::new)); } diff --git a/src/main/java/li/cil/oc2/common/bus/device/rpc/item/RedstoneInterfaceCardItemDevice.java b/src/main/java/li/cil/oc2/common/bus/device/rpc/item/RedstoneInterfaceCardItemDevice.java index d08f128a..dd8c3c15 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/rpc/item/RedstoneInterfaceCardItemDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/rpc/item/RedstoneInterfaceCardItemDevice.java @@ -58,7 +58,7 @@ public final class RedstoneInterfaceCardItemDevice extends AbstractItemRPCDevice @Nonnull @Override public LazyOptional getCapability(@Nonnull final Capability capability, @Nullable final Direction side) { - if (capability == Capabilities.REDSTONE_EMITTER && side != null) { + if (capability == Capabilities.redstoneEmitter() && side != null) { final int index = side.get3DDataValue(); return LazyOptional.of(() -> capabilities[index]).cast(); } diff --git a/src/main/java/li/cil/oc2/common/bus/device/vm/item/AbstractNetworkInterfaceDevice.java b/src/main/java/li/cil/oc2/common/bus/device/vm/item/AbstractNetworkInterfaceDevice.java index 66ac5393..97ffe50f 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/vm/item/AbstractNetworkInterfaceDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/vm/item/AbstractNetworkInterfaceDevice.java @@ -50,7 +50,7 @@ public abstract class AbstractNetworkInterfaceDevice extends IdentityProxy LazyOptional getCapability(final Capability cap, @Nullable final Direction side) { - if (cap == Capabilities.NETWORK_INTERFACE) { + if (cap == Capabilities.networkInterface()) { return LazyOptional.of(() -> networkInterface).cast(); } diff --git a/src/main/java/li/cil/oc2/common/capabilities/Capabilities.java b/src/main/java/li/cil/oc2/common/capabilities/Capabilities.java index a6f1a6d1..98c1f549 100644 --- a/src/main/java/li/cil/oc2/common/capabilities/Capabilities.java +++ b/src/main/java/li/cil/oc2/common/capabilities/Capabilities.java @@ -9,35 +9,44 @@ import li.cil.oc2.api.capabilities.RedstoneEmitter; import li.cil.oc2.api.capabilities.Robot; import li.cil.oc2.api.capabilities.TerminalUserProvider; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; -import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; import net.minecraftforge.energy.IEnergyStorage; -import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; public final class Capabilities { - public static final Capability ENERGY_STORAGE = CapabilityManager.get(new CapabilityToken<>() { }); - public static final Capability FLUID_HANDLER = CapabilityManager.get(new CapabilityToken<>() { }); - public static final Capability ITEM_HANDLER = CapabilityManager.get(new CapabilityToken<>() { }); + public static Capability energyStorage() { + return CapabilityRegistry.ENERGY_STORAGE; + } - public static final Capability DEVICE_BUS_ELEMENT = CapabilityManager.get(new CapabilityToken<>() { }); - public static final Capability DEVICE = CapabilityManager.get(new CapabilityToken<>() { }); - public static final Capability REDSTONE_EMITTER = CapabilityManager.get(new CapabilityToken<>() { }); - public static final Capability NETWORK_INTERFACE = CapabilityManager.get(new CapabilityToken<>() { }); - public static final Capability TERMINAL_USER_PROVIDER = CapabilityManager.get(new CapabilityToken<>() { }); - public static final Capability ROBOT = CapabilityManager.get(new CapabilityToken<>() { }); + public static Capability fluidHandler() { + return CapabilityRegistry.FLUID_HANDLER; + } - /////////////////////////////////////////////////////////////////// + public static Capability itemHandler() { + return CapabilityRegistry.ITEM_HANDLER; + } - @SubscribeEvent - public static void initialize(final RegisterCapabilitiesEvent event) { - event.register(DeviceBusElement.class); - event.register(Device.class); - event.register(RedstoneEmitter.class); - event.register(NetworkInterface.class); - event.register(TerminalUserProvider.class); - event.register(Robot.class); + public static Capability deviceBusElement() { + return CapabilityRegistry.DEVICE_BUS_ELEMENT; + } + + public static Capability device() { + return CapabilityRegistry.DEVICE; + } + + public static Capability redstoneEmitter() { + return CapabilityRegistry.REDSTONE_EMITTER; + } + + public static Capability networkInterface() { + return CapabilityRegistry.NETWORK_INTERFACE; + } + + public static Capability terminalUserProvider() { + return CapabilityRegistry.TERMINAL_USER_PROVIDER; + } + + public static Capability robot() { + return CapabilityRegistry.ROBOT; } } diff --git a/src/main/java/li/cil/oc2/common/capabilities/CapabilityRegistry.java b/src/main/java/li/cil/oc2/common/capabilities/CapabilityRegistry.java new file mode 100644 index 00000000..d985e9e6 --- /dev/null +++ b/src/main/java/li/cil/oc2/common/capabilities/CapabilityRegistry.java @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: MIT */ + +package li.cil.oc2.common.capabilities; + +import li.cil.oc2.api.bus.DeviceBusElement; +import li.cil.oc2.api.bus.device.Device; +import li.cil.oc2.api.capabilities.NetworkInterface; +import li.cil.oc2.api.capabilities.RedstoneEmitter; +import li.cil.oc2.api.capabilities.Robot; +import li.cil.oc2.api.capabilities.TerminalUserProvider; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.CapabilityManager; +import net.minecraftforge.common.capabilities.CapabilityToken; +import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; +import net.minecraftforge.energy.IEnergyStorage; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.items.IItemHandler; + +public final class CapabilityRegistry { + static final Capability ENERGY_STORAGE = CapabilityManager.get(new CapabilityToken<>() { }); + static final Capability FLUID_HANDLER = CapabilityManager.get(new CapabilityToken<>() { }); + static final Capability ITEM_HANDLER = CapabilityManager.get(new CapabilityToken<>() { }); + + static final Capability DEVICE_BUS_ELEMENT = CapabilityManager.get(new CapabilityToken<>() { }); + static final Capability DEVICE = CapabilityManager.get(new CapabilityToken<>() { }); + static final Capability REDSTONE_EMITTER = CapabilityManager.get(new CapabilityToken<>() { }); + static final Capability NETWORK_INTERFACE = CapabilityManager.get(new CapabilityToken<>() { }); + static final Capability TERMINAL_USER_PROVIDER = CapabilityManager.get(new CapabilityToken<>() { }); + static final Capability ROBOT = CapabilityManager.get(new CapabilityToken<>() { }); + + /////////////////////////////////////////////////////////////////// + + @SubscribeEvent + public static void initialize(final RegisterCapabilitiesEvent event) { + event.register(DeviceBusElement.class); + event.register(Device.class); + event.register(RedstoneEmitter.class); + event.register(NetworkInterface.class); + event.register(TerminalUserProvider.class); + event.register(Robot.class); + } +} diff --git a/src/main/java/li/cil/oc2/common/energy/EnergyStorageItemStack.java b/src/main/java/li/cil/oc2/common/energy/EnergyStorageItemStack.java index 56d4f827..c3a902ff 100644 --- a/src/main/java/li/cil/oc2/common/energy/EnergyStorageItemStack.java +++ b/src/main/java/li/cil/oc2/common/energy/EnergyStorageItemStack.java @@ -67,10 +67,6 @@ public final class EnergyStorageItemStack implements IEnergyStorage, ICapability @Nonnull @Override public LazyOptional getCapability(final Capability capability, @Nullable final Direction side) { - if (Capabilities.ENERGY_STORAGE != null) { - return Capabilities.ENERGY_STORAGE.orEmpty(capability, optional); - } else { - return LazyOptional.empty(); - } + return Capabilities.energyStorage().orEmpty(capability, optional); } } diff --git a/src/main/java/li/cil/oc2/common/entity/Robot.java b/src/main/java/li/cil/oc2/common/entity/Robot.java index f4124411..d002d4ab 100644 --- a/src/main/java/li/cil/oc2/common/entity/Robot.java +++ b/src/main/java/li/cil/oc2/common/entity/Robot.java @@ -171,13 +171,13 @@ public final class Robot extends Entity implements li.cil.oc2.api.capabilities.R @Nonnull @Override public LazyOptional getCapability(final Capability capability, @Nullable final Direction side) { - if (capability == Capabilities.ITEM_HANDLER) { + if (capability == Capabilities.itemHandler()) { return LazyOptional.of(() -> inventory).cast(); } - if (capability == Capabilities.ENERGY_STORAGE && Config.robotsUseEnergy()) { + if (capability == Capabilities.energyStorage() && Config.robotsUseEnergy()) { return LazyOptional.of(() -> energy).cast(); } - if (capability == Capabilities.ROBOT) { + if (capability == Capabilities.robot()) { return LazyOptional.of(() -> this).cast(); } diff --git a/src/main/java/li/cil/oc2/common/util/TooltipUtils.java b/src/main/java/li/cil/oc2/common/util/TooltipUtils.java index 39384d13..34844c36 100644 --- a/src/main/java/li/cil/oc2/common/util/TooltipUtils.java +++ b/src/main/java/li/cil/oc2/common/util/TooltipUtils.java @@ -151,7 +151,7 @@ public final class TooltipUtils { } public static void addEntityEnergyInformation(final ItemStack stack, final List tooltip) { - stack.getCapability(Capabilities.ENERGY_STORAGE).ifPresent(energy -> { + stack.getCapability(Capabilities.energyStorage()).ifPresent(energy -> { if (energy.getEnergyStored() == 0) { return; }