package advancedsystemsmanager.compatibility.waila;
import advancedsystemsmanager.api.tileentities.ITileElement;
import advancedsystemsmanager.blocks.BlockTileElement;
import advancedsystemsmanager.compatibility.CompatBase;
import advancedsystemsmanager.reference.Mods;
import advancedsystemsmanager.tileentities.TileEntityCluster;
import advancedsystemsmanager.tileentities.TileEntityEmitter;
import advancedsystemsmanager.tileentities.TileEntityQuantumCable;
import cpw.mods.fml.common.Optional;
import cpw.mods.fml.common.event.FMLInterModComms;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.IWailaRegistrar;
import net.minecraft.inventory.IInventory;
import net.minecraftforge.fluids.IFluidHandler;
import java.util.ArrayList;
import java.util.List;
public class WailaCompat extends CompatBase
{
private static Object labelProvider;
private static Object registrar;
private static List<Class> labelClasses = new ArrayList<Class>();
@Optional.Method(modid = Mods.WAILA)
public static void callbackRegister(IWailaRegistrar registrar)
{
IWailaDataProvider labelProvider = new WailaLabelProvider();
WailaCompat.labelProvider = labelProvider;
WailaCompat.registrar = registrar;
registrar.registerHeadProvider(labelProvider, IInventory.class);
registrar.registerHeadProvider(labelProvider, IFluidHandler.class);
registrar.registerHeadProvider(labelProvider, ITileElement.class);
registrar.registerHeadProvider(labelProvider, TileEntityCluster.class);
for (Class clazz : labelClasses)
{
registrar.registerHeadProvider(labelProvider, clazz);
}
registrar.registerBodyProvider(new ClusterDataProvider(), TileEntityCluster.class);
registrar.registerBodyProvider(new RedstoneOutputDataProvider(), TileEntityEmitter.class);
registrar.registerBodyProvider(new QuantumDataProvider(), TileEntityQuantumCable.class);
CamouflageDataProvider provider = new CamouflageDataProvider();
registrar.registerStackProvider(provider, BlockTileElement.class);
registrar.registerHeadProvider(provider, BlockTileElement.class);
registrar.registerBodyProvider(provider, BlockTileElement.class);
registrar.registerTailProvider(provider, BlockTileElement.class);
}
@Override
protected void init()
{
FMLInterModComms.sendMessage(Mods.WAILA, "register", "advancedsystemsmanager.compatibility.waila.WailaCompat.callbackRegister");
}
public void registerLabelProvider(Class clazz)
{
if (mod.isLoaded())
{
if (registrar != null)
{
((IWailaRegistrar) registrar).registerHeadProvider((IWailaDataProvider)labelProvider, clazz);
} else
{
labelClasses.add(clazz);
}
}
}
}