package gtPlusPlus.xmod.sol;

import java.lang.reflect.Constructor;

import cpw.mods.fml.common.registry.GameRegistry;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
import net.minecraft.item.Item;

public class HANDLER_SpiceOfLife {

	public static final void preInit() {
		if (LoadedMods.SpiceOfLife) {
			//Add a new Lunch Box with a reasonable amount of slots
			tryRegisterNewLunchBox("foodcrate", 12);
		}
	}

	public static final void init() {
		if (LoadedMods.SpiceOfLife) {

		}
	}

	public static final void postInit() {		
		if (LoadedMods.SpiceOfLife) {
			
		}
	}
	
	private static boolean tryRegisterNewLunchBox(String aItemName, int aSlots) {
		Item aNewBox = getNewLunchBox(aItemName, aSlots);
		if (aNewBox != null) {
			GameRegistry.registerItem(aNewBox, aItemName);
			Logger.INFO("[Spice of Life] Registered "+aItemName+" as a new food container.");
			return true;
		}		
		return false;
	}
	
	private static Item getNewLunchBox(String aItemName, int aSlots) {
		Class aItemFoodContainer = ReflectionUtils.getClass("squeek.spiceoflife.items.ItemFoodContainer");
		if (aItemFoodContainer != null) {
			Constructor aItemFoodContainerConstructor = ReflectionUtils.getConstructor(aItemFoodContainer, new Class[] {String.class, int.class});
			if (aItemFoodContainerConstructor != null) {
				Object aNewObject = ReflectionUtils.createNewInstanceFromConstructor(aItemFoodContainerConstructor, new Object[] {aItemName, aSlots});
				if (aNewObject instanceof Item) {
					Item aNewInstance = (Item) aNewObject;
					return aNewInstance;
				}
			}
		}
		return null;
	}
	
	
	
	

}