Updated caps to be manually disabled via config

Moved the cap injection to a method, allows them to be configurable.
This is not possible for Forge Energy as it is injected before even the
configuration are lodaed, thus violating their own capability contract
to use the method injection to explicitly make it configurable.

Updated the ratio key for forge energy to "ForgeEnergy" without a space
This commit is contained in:
yueh
2017-07-22 13:29:14 +02:00
parent 4ad31f5066
commit a4c468b9cf
7 changed files with 50 additions and 14 deletions
@@ -26,8 +26,11 @@ import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;
import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.energy.IEnergyStorage;
import appeng.api.storage.IStorageMonitorableAccessor;
import appeng.integration.IntegrationRegistry;
import appeng.integration.IntegrationType;
/**
@@ -40,15 +43,14 @@ public final class Capabilities
{
}
@CapabilityInject( IStorageMonitorableAccessor.class )
public static Capability<IStorageMonitorableAccessor> STORAGE_MONITORABLE_ACCESSOR;
@CapabilityInject( ITeslaConsumer.class )
public static Capability<ITeslaConsumer> TESLA_CONSUMER;
@CapabilityInject( ITeslaHolder.class )
public static Capability<ITeslaHolder> TESLA_HOLDER;
public static Capability<IEnergyStorage> FORGE_ENERGY;
/**
* Register AE2 provided capabilities.
*/
@@ -57,6 +59,36 @@ public final class Capabilities
CapabilityManager.INSTANCE.register( IStorageMonitorableAccessor.class, createNullStorage(), NullMENetworkAccessor::new );
}
@CapabilityInject( IStorageMonitorableAccessor.class )
private static void capIStorageMonitorableAccessorRegistered( Capability<IStorageMonitorableAccessor> cap )
{
STORAGE_MONITORABLE_ACCESSOR = cap;
}
@CapabilityInject( ITeslaConsumer.class )
private static void capITeslaConsumerRegistered( Capability<ITeslaConsumer> cap )
{
if( IntegrationRegistry.INSTANCE.isEnabled( IntegrationType.TESLA ) )
{
TESLA_CONSUMER = cap;
}
}
@CapabilityInject( ITeslaHolder.class )
private static void capITeslaHolderRegistered( Capability<ITeslaHolder> cap )
{
if( IntegrationRegistry.INSTANCE.isEnabled( IntegrationType.TESLA ) )
{
TESLA_HOLDER = cap;
}
}
@CapabilityInject( IEnergyStorage.class )
private static void capIEnergyStorageRegistered( Capability<IEnergyStorage> cap )
{
FORGE_ENERGY = cap;
}
// Create a storage implementation that does not do anything
private static <T> Capability.IStorage<T> createNullStorage()
{