package gory_moon.moarsigns.api;
import gory_moon.moarsigns.tileentites.TileEntityMoarSign;
import gory_moon.moarsigns.util.IntegrationException;
import gory_moon.moarsigns.util.RotationHandler;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import java.util.ArrayList;
public class Api {
/**
* Helper method for {@link SignRegistry#register(String, SignSpecialProperty, String, String, boolean, ItemStack, String)}
*
* @see SignRegistry#register(String, SignSpecialProperty, String, String, boolean, ItemStack, String)
*/
public static SignInfo register(String itemName, SignSpecialProperty property, String materialName, String path, boolean gotNugget, ItemStack materialItemStack, String modId) throws IntegrationException {
return SignRegistry.register(itemName, property, materialName, path, gotNugget, materialItemStack, modId);
}
/**
* Helper method for {@link SignRegistry#register(String, SignSpecialProperty, String, String, boolean, ItemStack, String, String)}
*
* @see SignRegistry#register(String, SignSpecialProperty, String, String, boolean, ItemStack, String, String)
*/
public static SignInfo register(String itemName, SignSpecialProperty property, String materialName, String path, boolean gotNugget, ItemStack materialItemStack, String modId, String activateTag) throws IntegrationException {
return SignRegistry.register(itemName, property, materialName, path, gotNugget, materialItemStack, modId, activateTag);
}
/**
* Helper method for {@link SignRegistry#register(String, SignSpecialProperty, String, String, boolean, ItemStack, ItemStack, String)}
*
* @see SignRegistry#register(String, SignSpecialProperty, String, String, boolean, ItemStack, ItemStack, String)
*/
public static SignInfo register(String itemName, SignSpecialProperty property, String materialName, String path, boolean gotNugget, ItemStack materialItemStack, ItemStack materialBlock, String modId) throws IntegrationException {
return SignRegistry.register(itemName, property, materialName, path, gotNugget, materialItemStack, materialBlock, modId);
}
/**
* Helper method for {@link SignRegistry#register(String, SignSpecialProperty, String, String, boolean, ItemStack, ItemStack, String, String)}
*
* @see SignRegistry#register(String, SignSpecialProperty, String, String, boolean, ItemStack, ItemStack, String, String)
*/
public static SignInfo register(String itemName, SignSpecialProperty property, String materialName, String path, boolean gotNugget, ItemStack materialItemStack, ItemStack materialBlock, String modId, String activateTag) throws IntegrationException {
return SignRegistry.register(itemName, property, materialName, path, gotNugget, materialItemStack, materialBlock, modId, activateTag);
}
/**
* Helper method for {@link SignRegistry#registerAlternativeMaterial(SignInfo, String, String, boolean, ItemStack)}
*
* @see SignRegistry#registerAlternativeMaterial(SignInfo, String, String, boolean, ItemStack)
*/
public static MaterialInfo registerAlternativeMaterial(SignInfo sInfo, String materialName, String path, boolean gotNugget, ItemStack materialItemStack) throws IntegrationException {
return SignRegistry.registerAlternativeMaterial(sInfo, materialName, path, gotNugget, materialItemStack);
}
/**
* Helper method for {@link SignRegistry#registerAlternativeMaterial(SignInfo, String, String, boolean, ItemStack, ItemStack)}
*
* @see SignRegistry#registerAlternativeMaterial(SignInfo, String, String, boolean, ItemStack, ItemStack)
*/
public static MaterialInfo registerAlternativeMaterial(SignInfo sInfo, String materialName, String path, boolean gotNugget, ItemStack materialItemStack, ItemStack materialBlock) throws IntegrationException {
return SignRegistry.registerAlternativeMaterial(sInfo, materialName, path, gotNugget, materialItemStack, materialBlock);
}
/**
* Helper method for {@link SignRegistry#registerAlternativeMaterial(SignInfo, MaterialInfo)}
*
* @see SignRegistry#registerAlternativeMaterial(SignInfo, MaterialInfo)
*/
public static MaterialInfo registerAlternativeMaterial(SignInfo sInfo, MaterialInfo mInfo) throws IntegrationException {
return SignRegistry.registerAlternativeMaterial(sInfo, mInfo);
}
/**
* Rotates the sign by one step
*
* @param tileEntity The tile entity of the sign that should setRotation
* @param reverse If the rotation would be in reverse
*/
public static void rotateSign(TileEntity tileEntity, boolean reverse) {
if (tileEntity instanceof TileEntityMoarSign) {
RotationHandler.rotate((TileEntityMoarSign) tileEntity, reverse);
}
}
/**
* Rotates the sign by a given amount
*
* @param tileEntity The tile entity of the sign that should setRotation
* @param rotations The amount of rotations to perform
*/
public static void rotateSign(TileEntity tileEntity, int rotations) {
if (tileEntity instanceof TileEntityMoarSign) {
RotationHandler.rotate((TileEntityMoarSign) tileEntity, rotations);
}
}
/**
* Sets a specific rotation of a sign
* Valid values are 0-15
*
* @param tileEntity The tile entity of the sign that should setRotation
* @param rotation The rotation to set
*/
public static void setRotationSign(TileEntity tileEntity, int rotation) {
if (tileEntity instanceof TileEntityMoarSign) {
RotationHandler.setRotation((TileEntityMoarSign) tileEntity, rotation);
}
}
/**
* Registers a class that implements {@link ISignRegistration}
* It needs to be registered before {@link FMLPostInitializationEvent}
*
* @param clazz The class
*/
public static <T extends ISignRegistration> void registerSignIntegration(Class<T> clazz) {
IntegrationRegistry.registerIntegration(clazz);
}
/**
* Registers a class that implements {@link ISignRegistration}
* It needs to be registered before {@link FMLPostInitializationEvent}
*
* @param registration The instance of the class
*/
public static void registerSignIntegration(ISignRegistration registration) {
IntegrationRegistry.registerIntegration(registration);
}
/**
* Adds a name of wood to list that is given in {@link ISignRegistration#registerWoodenSigns(ArrayList)}
*
* @param name Name in ore dictionary
*/
public static void registerPlankOreName(String name) {
IntegrationRegistry.registerPlankOreName(name);
}
/**
* Adds a name of metal, MetalBlock or gem to list that is given in {@link ISignRegistration#registerMetalSigns(ArrayList)}
*
* @param name Name in ore dictionary
*/
public static void registerMetalGemOreName(String name) {
IntegrationRegistry.registerMetalGemOreName(name);
}
}