package net.minecraft.src;

import java.util.ArrayList;

import codechicken.nei.API;
import codechicken.nei.IConfigureNEI;
import codechicken.nei.MultiItemRange;

/**
 * Compatibility plugin for NotEnoughItems.
 * 
 * @author MightyPork
 * @copy (c) 2012
 */
public class NEIPowerCraftConfig implements IConfigureNEI {
	@Override
	public void loadConfig() {
		try {
			
			ArrayList<int[]> list = new ArrayList<int[]>();			
			MultiItemRange range;
			
			
			if (hasModule("MOBILE")) {
				list.add(new int[] { 0, 7 });
				API.setItemDamageVariants(mod_PCcore.powerCrystal.blockID, list);
			}

			
			// others
			range = new MultiItemRange();
			if (hasModule("CORE")) range.add(mod_PCcore.craftingTool);
			if (hasModule("MOBILE")) range.add(mod_PCcore.oreSniffer);
			if (hasModule("MOBILE")) range.add(mod_PCcore.activator);
			if (hasModule("TRANSPORT")) range.add(mod_PCtransport.ironFrame);
			API.addSetRange("PowerCraft.Others", range);
			

			if (hasModule("MACHINES")){
				
				API.hideItem(mod_PCmachines.optical.blockID);
				// machines
				range = new MultiItemRange();
				range.add(mod_PCmachines.builder);
				range.add(mod_PCmachines.harvester);
				range.add(mod_PCmachines.roaster);
				range.add(mod_PCmachines.xpbank);
				range.add(mod_PCtransport.automaticWorkbench);
				API.addSetRange("PowerCraft.Machines", range);
	
				range = new MultiItemRange();
				range.add(mod_PCmachines.laser);
				range.add(mod_PCmachines.mirrorPlacer);
				range.add(mod_PCmachines.prismPlacer);
				API.addSetRange("PowerCraft.Optical", range);
			}

			if (hasModule("LOGIC")) {
				// logic
				range = new MultiItemRange();
				range.add(mod_PClogic.gateOn, 0, PClo_GateType.TOTAL_GATE_COUNT - 1);
				range.add(mod_PClogic.pulsar);
				API.addSetRange("PowerCraft.Logic Gates", range);
	
				range = new MultiItemRange();
				range.add(mod_PClogic.lightOn, 0, 15);
				API.addSetRange("PowerCraft.Control Lights", range);
				
				// logic
				API.setMaxDamageException(mod_PClogic.gateOn.blockID, 20);
				API.hideItem(mod_PClogic.gateOff.blockID);
				API.hideItem(mod_PClogic.lightOff.blockID);
			}

			if (hasModule("TRANSPORT")){
				// transport
				range = new MultiItemRange();
				range.add(mod_PCtransport.conveyorBelt);
				range.add(mod_PCtransport.brakeBelt);
				range.add(mod_PCtransport.detectionBelt);
				range.add(mod_PCtransport.ejectionBelt);
				range.add(mod_PCtransport.redirectionBelt);
				range.add(mod_PCtransport.separationBelt);
				range.add(mod_PCtransport.speedyBelt);
				range.add(mod_PCtransport.teleporter);
				API.addSetRange("PowerCraft.Conveyor Belts", range);
			}

			if (hasModule("CORE")){
				// mobile
				range = new MultiItemRange();
				range.add(mod_PCmobile.powerCrystal, 0, 7);
				range.add(mod_PCmobile.powerDust);
				API.addSetRange("PowerCraft.Power Crystals", range);
			}

			if (hasModule("WIRELESS")){
				list.clear();
				list.add(new int[] { 0, 2 });
				API.setItemDamageVariants(mod_PCwireless.sensor.blockID, list);
				
				// wireless
				range = new MultiItemRange();
				range.add(mod_PCwireless.radioRx);
				range.add(mod_PCwireless.radioTx);
				range.add(mod_PCwireless.portableTx);
				API.addSetRange("PowerCraft.Radio", range);
	
				range = new MultiItemRange();
				range.add(mod_PCwireless.sensor, 0, 2);
				API.addSetRange("PowerCraft.Motion Sensors", range);
			}
		} catch (Throwable t) {
			t.printStackTrace();
		}
	}

	private boolean hasModule(String name) {
		return PC_Module.modules.contains(name);
	}
}
