import crafttweaker.recipes.ICraftingRecipe;
import crafttweaker.recipes.ICraftingInventory;
var esencias = ["aer", "metallum"] as string[];
//jar.marked("jar1").transformReplace(jarb)
//recipes.addShapeless(nombre,

for esencia  in esencias{
 
	var nombre="CobineEssentia"+esencia;
	var jar=<thaumcraft:jar_normal>.withTag ({Aspects: [{key: esencia}]});
	var jarpasa= <thaumcraft:jar_normal>.withTag({Calculo:"pasa",Aspects:[{key: esencia}]});
	var jarfalta=<thaumcraft:jar_normal>.withTag({Calculo:"falta",Aspects:[{key: esencia}]});
	
	var jarb=<thaumcraft:jar_normal>.withTag({Aspects: [{amount: 250 , key: esencia}]});
	var jarv=<thaumcraft:jar_normal>;

		
	
	
recipes.addShaped(nombre+"pasa",
	jarb,[
	[
	jarpasa.marked("jar1"),
	jar.marked("jar2").transformReplace(jarb),null
	],
		[null,null,null],[null,null,null]
	],
	//IrecipeFunction, just return the output, it doesn't interest us this time.
	function(out,ins,cInfo){
	
		//print("Entra en pasa");
		var cantidad1=0 as int;
		var cantidad2=0 as int;
		var cantidad=0 as int;

		var esenciaJar1="" as string;
		var esenciaJar2="" as string;
		var esenciaJar3="" as string;
		
		if (ins.jar1.tag has "Aspects"){
			cantidad1= ins.jar1.tag.Aspects[0].amount as int;
			esenciaJar1=ins.jar1.tag.Aspects[0].key as string;	
		}else {return null;}
		
		if (ins.jar1.tag has "Aspects"){
			cantidad2= ins.jar2.tag.Aspects[0].amount as int;
			esenciaJar2=ins.jar2.tag.Aspects[0].key as string;
		}else {return null;}

		var suma=0 as int;
		suma=cantidad1+cantidad2;		
		cantidad=suma;
		
		esenciaJar3=out.tag.Aspects[0].key as string;
		var t1=cInfo.inventory.getStack(0);

		
		if( esenciaJar1==esenciaJar2 & esenciaJar1==esenciaJar3 ){
			if(suma>250){	
				cantidad-=250;			
				var rjar=<thaumcraft:jar_normal>.withTag({Aspects: [{amount: cantidad, key: esenciaJar1}]});
				return rjar;
			}else{
				cInfo.inventory.setStack(0, 0, <thaumcraft:jar_normal>.withTag({Aspects: [{amount: cantidad1, key: esenciaJar1}]}));
				return null;
			}			
		}else{
			return null;
		}

	}
	,
		null
	);
	
	recipes.addShaped(nombre+"falta",
	jarb,[
	[
	jarfalta.marked("jar1"),
	jar.marked("jar2").transformReplace(jarv),null
	],
		[null,null,null],[null,null,null]
	],
	//IrecipeFunction, just return the output, it doesn't interest us this time.
	function(out,ins,cInfo){
		//print("Entra en falta");
		var cantidad1=0 as int;
		var cantidad2=0 as int;
		var cantidad=0 as int;

		var esenciaJar1="" as string;
		var esenciaJar2="" as string;
		var esenciaJar3="" as string;
		
		if (ins.jar1.tag has "Aspects"){
			cantidad1= ins.jar1.tag.Aspects[0].amount as int;
			esenciaJar1=ins.jar1.tag.Aspects[0].key as string;	
		}else {return null;}
		
		if (ins.jar1.tag has "Aspects"){
			cantidad2= ins.jar2.tag.Aspects[0].amount as int;
			esenciaJar2=ins.jar2.tag.Aspects[0].key as string;
		}else {return null;}

		var suma=0 as int;
		suma=cantidad1+cantidad2;		
		cantidad=suma;
		
		esenciaJar3=out.tag.Aspects[0].key as string;
		var t1=cInfo.inventory.getStack(0);

		
		if( esenciaJar1==esenciaJar2 & esenciaJar1==esenciaJar3 ){
			if(suma<=250){			
				var rjar=<thaumcraft:jar_normal>.withTag({Aspects: [{amount: cantidad, key: esenciaJar1}]});
				return rjar;			
			}else{
				
				cInfo.inventory.setStack(0, 0, <thaumcraft:jar_normal>.withTag({Aspects: [{amount: cantidad1, key: esenciaJar1}]}));
				return null;
			}			
		}else{
			return null;
		}

	}
	,
		null
	);
	
	
	recipes.addShaped(nombre,
	jarb,[
	[
	jar.marked("jar1"),
	jar.marked("jar2"),null
	],
		[null,null,null],[null,null,null]
	],
	//IrecipeFunction, just return the output, it doesn't interest us this time.
	function(out,ins,cInfo){
		var cantidad1=0 as int;
		var cantidad2=0 as int;
		var cantidad=0 as int;

		var esenciaJar1="" as string;
		var esenciaJar2="" as string;
		var esenciaJar3="" as string;
		
		if (ins.jar1.tag has "Aspects"){
			cantidad1= ins.jar1.tag.Aspects[0].amount as int;
			esenciaJar1=ins.jar1.tag.Aspects[0].key as string;	
		}else {return null;}
		
		if (ins.jar1.tag has "Aspects"){
			cantidad2= ins.jar2.tag.Aspects[0].amount as int;
			esenciaJar2=ins.jar2.tag.Aspects[0].key as string;
		}else {return null;}

		var suma=0 as int;
		suma=cantidad1+cantidad2;		
		cantidad=suma;
		
		esenciaJar3=out.tag.Aspects[0].key as string;
		//print(esenciaJar1);
		//print(esenciaJar2);
		//print(esenciaJar3);
		//print(suma);
		
		//cInfo.player.give(item);
		//inventory.setStack(row, column, item) 


		var t1=cInfo.inventory.getStack(0);

		
		if( esenciaJar1==esenciaJar2 & esenciaJar1==esenciaJar3 ){
			if(suma>250){
				var graba=false as bool;
				cantidad-=250;				
				if(t1.tag has "Calculo"){
					var calculo=t1.tag.Calculo;
					if(calculo!="pasa"){	
						print("Graba pasa");
						graba=true;
					}
				}else{
					print("No Calculo pasa");		
					graba=true;
				}
				if (graba){cInfo.inventory.setStack(0, 0, <thaumcraft:jar_normal>.withTag({Calculo:"pasa",Aspects: [{amount: cantidad1, key: esenciaJar1}]})); }
				
			}else{
				var graba=false as bool;
				if(t1.tag has "Calculo"){
					var calculo=t1.tag.Calculo;
					if(calculo!="falta"){
						print("Graba falta");
						graba=true;					
					}
				}else{
					print("No Calculo falta");	
					graba=true;
				}
				if (graba){cInfo.inventory.setStack(0, 0, <thaumcraft:jar_normal>.withTag({Calculo:"falta",Aspects: [{amount: cantidad1, key: esenciaJar1}]})); }
			}
			
			
			//var rjar=<thaumcraft:jar_normal>.withTag({Aspects: [{amount: cantidad, key: esenciaJar1}]});
			//return rjar;
			return null;
		}else{
			return null;
		}

	}
	,
		null
	);


}






//cristal.withTag({Aspects: [{amount: 1, key: "metallum"}]})
var phial=<thaumcraft:phial>;
var cristal=<thaumcraft:crystal_essence>;

recipes.addShapeless("EssentiaToLiquid",
phial,[
phial.marked("phial"),
cristal.marked("cristal")
],
//IrecipeFunction, just return the output, it doesn't interest us this time.
function(out,ins,cInfo){

var Cantidad=0 as int;
var esenciaCristal="" as string;
var esenciaPhial="" as string;

if (ins.cristal.hasTag){
	esenciaCristal=ins.cristal.tag.Aspects[0].key as string;
}

if (ins.phial.hasTag){
	
	if(isNull(ins.phial.tag.Aspects)){}
	else{
		Cantidad= ins.phial.tag.Aspects[0].amount as int;
		esenciaPhial=ins.phial.tag.Aspects[0].key as string;
		}	
}

Cantidad=Cantidad+1;
var tphial=phial.withTag({Aspects: [{amount: Cantidad, key: esenciaCristal}]});
if (Cantidad>=10){
	tphial=<thaumcraft:phial:1>.withTag({Aspects: [{amount: 10, key: esenciaCristal}]});
}

if (esenciaCristal==esenciaPhial | esenciaPhial==""){
	return tphial;
}else{return null;}
},
	null
);