// Path: src/main/java/com/chrischurchwell/jukeit/material/items/BlankDisc.java
// public class BlankDisc extends GenericCustomItem implements DiscColorable, CraftPermissible {
// 
// 	private DiscColor color = DiscColor.WHITE; //white is the default
// 	
// 	public BlankDisc(String name, DiscColor color) {
// 		super(JukeIt.getInstance(), name);
// 		this.color = color;
// 		setTexture(this.color.blankTexture().getFile());
// 	}
// 	
// 	public DiscColor getColor() {
// 		return color;
// 	}
// 	
// 	@Override
// 	public String getCraftPermission() {
// 		return "jukeit.craft.blankdisc";
// 	}
// }
// 
// Path: src/main/java/com/chrischurchwell/jukeit/material/items/BurnedDisc.java
// public class BurnedDisc extends GenericCustomItem implements DiscColorable {
// 	
// 	private DiscColor color = DiscColor.WHITE; //white is the default color
// 	
// 	public BurnedDisc(DiscColor color) {
// 		super(JukeIt.getInstance(), color.toString());
// 		this.color = color;
// 		setName("Ruined Burned Disc");
// 		setTexture(color.burnedTexture().getFile());
// 	}
// 	
// 	public boolean onItemInteract(SpoutPlayer player, SpoutBlock block, org.bukkit.block.BlockFace face) {
// 		Debug.debug(player, "Disc URL ", DiscUtil.decodeDisc(player.getItemInHand()));
// 		
// 		return true;
// 	}
// 	
// 	public DiscColor getColor() {
// 		return color;
// 	}
// }
// 
// Path: src/main/java/com/chrischurchwell/jukeit/util/Debug.java
// public class Debug {
// 	
// 	public static final String tag = "JukeIt";
// 	
// 	public static void debug(String debugText) {
// 		if (JukeIt.getInstance().getConfig().getBoolean("debug")) {
// 			Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.GOLD +"["+tag+"] " + debugText);
// 		}
// 	}
// 	
// 	public static void debug(Object... debugTexts) {
// 		String allText = "";
// 		for (Object debugText : debugTexts) {
// 			allText = allText + debugText.toString();
// 		}
// 		debug(allText);
// 	}
// 	
// 	public static void sdebug(Object... debugTexts) {
// 		String allText = "";
// 		for (Object debugText : debugTexts) {
// 			allText = allText + debugText.toString() + " :: ";
// 		}
// 		debug(allText);
// 	}
// 	
// 	public static void debug(Player player, String debugText) {
// 		if (JukeIt.getInstance().getConfig().getBoolean("debug")) {
// 			player.sendMessage(ChatColor.DARK_GRAY + "["+ ChatColor.GRAY + tag + ChatColor.DARK_GRAY + "] " + ChatColor.GRAY +debugText);
// 			Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.GOLD +"["+tag+"] " + player.getName() + ": " + debugText);
// 		}
// 	}
// 	
// 	public static void debug(Player player, Object... debugTexts) {
// 		String allText = "";
// 		for (Object debugText : debugTexts) {
// 			allText = allText + debugText.toString();
// 		}
// 		debug(player, allText);
// 	}
// 	
// }


import java.util.ArrayList;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.getspout.spoutapi.inventory.SpoutItemStack;
import com.chrischurchwell.jukeit.material.items.BlankDisc;
import com.chrischurchwell.jukeit.material.items.BurnedDisc;
import com.chrischurchwell.jukeit.util.Debug;

/**
 * This file is part of JukeIt
 *
 * Copyright (C) 2011-2013  Chris Churchwell
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.chrischurchwell.jukeit.material.blocks;





public class MachineRecipe {

	public static enum RecipeDiscType {
		BURNED(),
		BLANK(),
		ANY();
		
		RecipeDiscType() {
			
		}
		
		public static boolean matches(RecipeDiscType itemDiscType, RecipeDiscType compareDiscType) {
			if (compareDiscType.equals(RecipeDiscType.ANY)) return true;
			if(itemDiscType.equals(compareDiscType)) return true;
			return false;
		}
		
		public static RecipeDiscType getItemDiscType(SpoutItemStack item) {
			if (item.getMaterial() instanceof BurnedDisc) return RecipeDiscType.BURNED;
			if (item.getMaterial() instanceof BlankDisc) return RecipeDiscType.BLANK;
			return null;
		}
	}
	
	public static List<MachineRecipe> recipes = new ArrayList<MachineRecipe>();
	
	public static void addMachineRecipe(MachineRecipe recipe) {
		recipes.add(recipe);
	}
	
	/**
	 * check the itemstacks for a valid recipe. if found returns the recipe itemstack. returns null otherwise.
	 */
	public static ItemStack getRecipeMatch(SpoutItemStack discItem, SpoutItemStack ingredientItem) {
		Debug.sdebug("getRecipeMatch", discItem, ingredientItem);
		
		//currently dont support custom items.
		if (ingredientItem.isCustomItem()) return null;
		

// Path: src/main/java/com/chrischurchwell/jukeit/material/items/BlankDisc.java
// public class BlankDisc extends GenericCustomItem implements DiscColorable, CraftPermissible {
// 
// 	private DiscColor color = DiscColor.WHITE; //white is the default
// 	
// 	public BlankDisc(String name, DiscColor color) {
// 		super(JukeIt.getInstance(), name);
// 		this.color = color;
// 		setTexture(this.color.blankTexture().getFile());
// 	}
// 	
// 	public DiscColor getColor() {
// 		return color;
// 	}
// 	
// 	@Override
// 	public String getCraftPermission() {
// 		return "jukeit.craft.blankdisc";
// 	}
// }
// 
// Path: src/main/java/com/chrischurchwell/jukeit/material/items/BurnedDisc.java
// public class BurnedDisc extends GenericCustomItem implements DiscColorable {
// 	
// 	private DiscColor color = DiscColor.WHITE; //white is the default color
// 	
// 	public BurnedDisc(DiscColor color) {
// 		super(JukeIt.getInstance(), color.toString());
// 		this.color = color;
// 		setName("Ruined Burned Disc");
// 		setTexture(color.burnedTexture().getFile());
// 	}
// 	
// 	public boolean onItemInteract(SpoutPlayer player, SpoutBlock block, org.bukkit.block.BlockFace face) {
// 		Debug.debug(player, "Disc URL ", DiscUtil.decodeDisc(player.getItemInHand()));
// 		
// 		return true;
// 	}
// 	
// 	public DiscColor getColor() {
// 		return color;
// 	}
// }
// 
// Path: src/main/java/com/chrischurchwell/jukeit/util/Debug.java
// public class Debug {
// 	
// 	public static final String tag = "JukeIt";
// 	
// 	public static void debug(String debugText) {
// 		if (JukeIt.getInstance().getConfig().getBoolean("debug")) {
// 			Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.GOLD +"["+tag+"] " + debugText);
// 		}
// 	}
// 	
// 	public static void debug(Object... debugTexts) {
// 		String allText = "";
// 		for (Object debugText : debugTexts) {
// 			allText = allText + debugText.toString();
// 		}
// 		debug(allText);
// 	}
// 	
// 	public static void sdebug(Object... debugTexts) {
// 		String allText = "";
// 		for (Object debugText : debugTexts) {
// 			allText = allText + debugText.toString() + " :: ";
// 		}
// 		debug(allText);
// 	}
// 	
// 	public static void debug(Player player, String debugText) {
// 		if (JukeIt.getInstance().getConfig().getBoolean("debug")) {
// 			player.sendMessage(ChatColor.DARK_GRAY + "["+ ChatColor.GRAY + tag + ChatColor.DARK_GRAY + "] " + ChatColor.GRAY +debugText);
// 			Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.GOLD +"["+tag+"] " + player.getName() + ": " + debugText);
// 		}
// 	}
// 	
// 	public static void debug(Player player, Object... debugTexts) {
// 		String allText = "";
// 		for (Object debugText : debugTexts) {
// 			allText = allText + debugText.toString();
// 		}
// 		debug(player, allText);
// 	}
// 	
// }


// Path: src/main/java/com/chrischurchwell/jukeit/material/blocks/MachineRecipe.java
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.getspout.spoutapi.inventory.SpoutItemStack;
import com.chrischurchwell.jukeit.material.items.BlankDisc;
import com.chrischurchwell.jukeit.material.items.BurnedDisc;
import com.chrischurchwell.jukeit.util.Debug;

/**
 * This file is part of JukeIt
 *
 * Copyright (C) 2011-2013  Chris Churchwell
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.chrischurchwell.jukeit.material.blocks;





public class MachineRecipe {

	public static enum RecipeDiscType {
		BURNED(),
		BLANK(),
		ANY();
		
		RecipeDiscType() {
			
		}
		
		public static boolean matches(RecipeDiscType itemDiscType, RecipeDiscType compareDiscType) {
			if (compareDiscType.equals(RecipeDiscType.ANY)) return true;
			if(itemDiscType.equals(compareDiscType)) return true;
			return false;
		}
		
		public static RecipeDiscType getItemDiscType(SpoutItemStack item) {
			if (item.getMaterial() instanceof BurnedDisc) return RecipeDiscType.BURNED;
			if (item.getMaterial() instanceof BlankDisc) return RecipeDiscType.BLANK;
			return null;
		}
	}
	
	public static List<MachineRecipe> recipes = new ArrayList<MachineRecipe>();
	
	public static void addMachineRecipe(MachineRecipe recipe) {
		recipes.add(recipe);
	}
	
	/**
	 * check the itemstacks for a valid recipe. if found returns the recipe itemstack. returns null otherwise.
	 */
	public static ItemStack getRecipeMatch(SpoutItemStack discItem, SpoutItemStack ingredientItem) {
		Debug.sdebug("getRecipeMatch", discItem, ingredientItem);
		
		//currently dont support custom items.
		if (ingredientItem.isCustomItem()) return null;
		

		Debug.debug("Ingredient is not a custom item");
