blob: b42e753cba1d866a960cd14c929573178a34e66b [file] [log] [blame] [raw]
package mcp.mobius.waila.api;
/**
* Main registration interface. An instance will be provided to a method specified in an IMC msg formatted as follow<br>
* FMLInterModComms.sendMessage("Waila", "register", "fully.qualified.path.to.registration.method");<br>
* The registration method need to follow this signature<br>
* public static void callbackRegister({@link IWailaRegistrar} registrar)<p>
* If not specified otherwise, all the registration methods taking a class can take classes as well as interfaces.
* Waila will do a lookup using instanceof on the registered classes, meaning that if all your targets inherit one interface, you only need
* to specify it to cover the whole hierarchy.<br>
* For the registration of blocks, both Blocks and TileEntities are accepted.<p>
* For the configuration keys :<br>
* modname refers to a String used for display in Waila's config panel.<br>
* keyname refers to an unique key used internally for config query (cf {@link IWailaConfigHandler}). Those keys are shared across Waila, keep them unique !<br>
*
*
* @author ProfMobius
*
*/
public interface IWailaRegistrar {
/* Add a config option in the section modname with displayed text configtext and access key keyname */
public void addConfig(String modname, String keyname, String configtext);
public void addConfig(String modname, String keyname, String configtext, boolean defvalue);
public void addConfigRemote(String modname, String keyname, String configtext);
public void addConfigRemote(String modname, String keyname, String configtext, boolean defvalue);
public void addConfig(String modname, String keyname);
public void addConfig(String modname, String keyname, boolean defvalue);
public void addConfigRemote(String modname, String keyname);
public void addConfigRemote(String modname, String keyname, boolean defvalue);
/* Register a stack overrider for the given blockID */
public void registerStackProvider(IWailaDataProvider dataProvider, Class block);
/* Same thing, but works on a class hierarchy instead */
public void registerHeadProvider (IWailaDataProvider dataProvider, Class block);
public void registerBodyProvider (IWailaDataProvider dataProvider, Class block);
public void registerTailProvider (IWailaDataProvider dataProvider, Class block);
/* Registering an NBT Provider provides a way to override the default "writeToNBT" way of doing things. */
public void registerNBTProvider(IWailaDataProvider dataProvider, Class block);
/* Entity text registration methods */
public void registerHeadProvider (IWailaEntityProvider dataProvider, Class entity);
public void registerBodyProvider (IWailaEntityProvider dataProvider, Class entity);
public void registerTailProvider (IWailaEntityProvider dataProvider, Class entity);
public void registerOverrideEntityProvider (IWailaEntityProvider dataProvider, Class entity);
/* Registering an NBT Provider provides a way to override the default "writeToNBT" way of doing things. */
public void registerNBTProvider(IWailaEntityProvider dataProvider, Class entity);
/* FMP Providers */
public void registerHeadProvider(IWailaFMPProvider dataProvider, String name);
public void registerBodyProvider(IWailaFMPProvider dataProvider, String name);
public void registerTailProvider(IWailaFMPProvider dataProvider, String name);
/* The block decorators */
public void registerDecorator (IWailaBlockDecorator decorator, Class block);
public void registerDecorator (IWailaFMPDecorator decorator, String name);
public void registerTooltipRenderer(String name, IWailaTooltipRenderer renderer);
/* UNUSED FOR NOW (Will be used for the ingame wiki */
//public void registerDocTextFile (String filename);
//public void registerShortDataProvider (IWailaSummaryProvider dataProvider, Class item);
}