package advancedsystemsmanager.compatibility.rf;
import advancedsystemsmanager.api.ISystemType;
import advancedsystemsmanager.api.execution.ICommand;
import advancedsystemsmanager.blocks.TileFactory;
import advancedsystemsmanager.compatibility.CompatBase;
import advancedsystemsmanager.compatibility.ModCompat;
import advancedsystemsmanager.compatibility.rf.commands.CommandRFInput;
import advancedsystemsmanager.compatibility.rf.commands.CommandRFOutput;
import advancedsystemsmanager.reference.Names;
import advancedsystemsmanager.registry.ClusterRegistry;
import advancedsystemsmanager.registry.CommandRegistry;
import advancedsystemsmanager.registry.SystemTypeRegistry;
import advancedsystemsmanager.tileentities.manager.TileEntityManager;
import cofh.api.energy.IEnergyConnection;
import cofh.api.energy.IEnergyProvider;
import cofh.api.energy.IEnergyReceiver;
import net.minecraft.tileentity.TileEntity;
import java.util.Set;
public class RFCompat extends CompatBase
{
public static ISystemType RF_PROVIDER;
public static ISystemType RF_RECEIVER;
public static ISystemType RF_STORAGE;
public static ICommand RF_INPUT_COMMAND;
public static ICommand RF_OUTPUT_COMMAND;
public static ICommand RF_CONDITION_COMMAND;
public static TileFactory RF;
@Override
protected void init()
{
RF_PROVIDER = SystemTypeRegistry.register(new SystemTypeRegistry.SystemType<IEnergyProvider>(Names.RF_INPUT)
{
@Override
public boolean isInstance(TileEntityManager manager, TileEntity tileEntity)
{
return tileEntity instanceof IEnergyProvider;
}
@Override
protected String getErrorName()
{
return Names.NO_RF_ERROR;
}
});
RF_RECEIVER = SystemTypeRegistry.register(new SystemTypeRegistry.SystemType<IEnergyReceiver>(Names.RF_OUTPUT)
{
@Override
public boolean isInstance(TileEntityManager manager, TileEntity tileEntity)
{
return tileEntity instanceof IEnergyReceiver;
}
@Override
protected String getErrorName()
{
return Names.NO_RF_ERROR;
}
});
RF_STORAGE = SystemTypeRegistry.register(new SystemTypeRegistry.SystemType<IEnergyConnection>(Names.RF_STORAGE)
{
@Override
public boolean isInstance(TileEntityManager manager, TileEntity tileEntity)
{
return tileEntity instanceof IEnergyProvider || tileEntity instanceof IEnergyReceiver;
}
@Override
public boolean containsGroup(Set<ISystemType> types)
{
return types.contains(RF_RECEIVER) || types.contains(RF_PROVIDER);
}
@Override
protected String getErrorName()
{
return Names.NO_RF_ERROR;
}
});
RF_INPUT_COMMAND = CommandRegistry.registerCommand(new CommandRFInput());
RF_OUTPUT_COMMAND = CommandRegistry.registerCommand(new CommandRFOutput());
// StevesEnum.RF_CONDITION = StevesEnum.addComponentType(19, ICommand.CommandType.COMMAND_CONTROL, StevesEnum.RF_CONDITION_SHORT, StevesEnum.RF_CONDITION_LONG, new ConnectionSet[]{ConnectionSet.STANDARD_CONDITION}, MenuRFStorage.class, MenuRFTarget.class, MenuRFCondition.class, MenuResult.class);
ClusterRegistry.register(new TileFactory.Cluster(TileEntityRFNode.class, new String[]{Names.CABLE_RF}));
}
@Override
protected void postInit()
{
ModCompat.registerLabel(IEnergyProvider.class);
ModCompat.registerLabel(IEnergyReceiver.class);
}
}