Added capability for redstone output, inline registration.
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
package li.cil.oc2.api.bus.device.capabilities;
|
||||
|
||||
/**
|
||||
* This interface may be provided as a capability by item components to signal
|
||||
* to the containing {@link net.minecraft.tileentity.TileEntity} that they wish
|
||||
* to emit a redstone signal. This is used by the built-in redstone interface
|
||||
* card, for example.
|
||||
*/
|
||||
public interface RedstoneEmitter {
|
||||
/**
|
||||
* Returns the redstone output level for the side this interface was returned for.
|
||||
*
|
||||
* @return the redstone output level.
|
||||
*/
|
||||
int getRedstoneOutput();
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
@ParametersAreNonnullByDefault
|
||||
@MethodsReturnNonnullByDefault
|
||||
package li.cil.oc2.api.bus.device.capabilities;
|
||||
|
||||
import mcp.MethodsReturnNonnullByDefault;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
@@ -1,8 +1,10 @@
|
||||
package li.cil.oc2.common.capabilities;
|
||||
|
||||
import li.cil.oc2.api.bus.DeviceBusElement;
|
||||
import li.cil.oc2.api.bus.device.capabilities.RedstoneEmitter;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.CapabilityInject;
|
||||
import net.minecraftforge.common.capabilities.CapabilityManager;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
@@ -20,9 +22,19 @@ public final class Capabilities {
|
||||
@CapabilityInject(DeviceBusElement.class)
|
||||
public static Capability<DeviceBusElement> DEVICE_BUS_ELEMENT = null;
|
||||
|
||||
@CapabilityInject(RedstoneEmitter.class)
|
||||
public static Capability<RedstoneEmitter> REDSTONE_EMITTER = null;
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
public static void initialize() {
|
||||
DeviceBusElementCapability.register();
|
||||
register(DeviceBusElement.class);
|
||||
register(RedstoneEmitter.class);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
private static <T> void register(final Class<T> type) {
|
||||
CapabilityManager.INSTANCE.register(type, new NullStorage<>(), () -> null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
package li.cil.oc2.common.capabilities;
|
||||
|
||||
import li.cil.oc2.api.bus.DeviceBusElement;
|
||||
import li.cil.oc2.common.bus.AbstractDeviceBusElement;
|
||||
import net.minecraftforge.common.capabilities.CapabilityManager;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
|
||||
public final class DeviceBusElementCapability {
|
||||
public static void register() {
|
||||
CapabilityManager.INSTANCE.register(DeviceBusElement.class, new NullStorage<>(), Implementation::new);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
private static final class Implementation extends AbstractDeviceBusElement {
|
||||
@Override
|
||||
public Optional<Collection<LazyOptional<DeviceBusElement>>> getNeighbors() {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user