// Path: src/main/java/oreregistry/api/registry/IProduct.java
// public interface IProduct {
// 	
// 	/**
// 	 * The type of the product. For examples see {@link ProductTypes}.
// 	 */
// 	String getType();
// 	
// 	/**
// 	 * @return A list with all registered variants of this product.
// 	 */
// 	List<ItemStack> getVariants();
// 
// 	/**
// 	 * @return A copy of the chosen product.
// 	 */
// 	ItemStack getChosenProduct();
// 
// 	/**
// 	 * @return The resource of this product.
// 	 */
// 	IResource getResource();
// 	
// }
// 
// Path: src/main/java/oreregistry/api/registry/IResourceRegistry.java
// public interface IResourceRegistry {
// 
// 	/**
// 	 * Register a type of resource added by your mod.
// 	 */
// 	IResource registerResource(String resourceType);
// 	
// 	/**
// 	 * Returns a read-only map containing resource names and their associated
// 	 * resources.
// 	 */
// 	Map<String, IResource> getRegisteredResources();
// 	
// 	/**
// 	 * Register a {@link IUnificationHandler}.
// 	 */
// 	void registerUnificationHandler(String resourceType, IUnificationHandler unificationHandler);
// 	
// 	/**
// 	 * Returns a read-only map containing all {@link IUnificationHandler}s of the resource of this type.
// 	 */
// 	Collection<IUnificationHandler> getUnificationHandlers(String resourceType);
// 	
// 	/**
// 	 * The current state of the registry process.
// 	 *
// 	 * You only can register resources and products in the active state.
// 	 */
// 	OreRegistryState getState();
// 
// }


import oreregistry.api.registry.IProduct;
import oreregistry.api.registry.IResourceRegistry;
import net.minecraft.item.ItemStack;
/*
 * Copyright (c) 2017 Nedelosk, Mezz
 *
 * This work (the MOD) is licensed under the "MIT" License, see LICENSE for details.
 */
package oreregistry.api;



/**
 * This can be used to unify items.
 * <p>
 * You can register this handler with {@link IResourceRegistry#registerUnificationHandler(String, IUnificationHandler)}
 * and get all handlers of a resource with {@link IResourceRegistry#getUnificationHandlers(String)}.
 */
@FunctionalInterface
public interface IUnificationHandler {
	
// Path: src/main/java/oreregistry/api/registry/IProduct.java
// public interface IProduct {
// 	
// 	/**
// 	 * The type of the product. For examples see {@link ProductTypes}.
// 	 */
// 	String getType();
// 	
// 	/**
// 	 * @return A list with all registered variants of this product.
// 	 */
// 	List<ItemStack> getVariants();
// 
// 	/**
// 	 * @return A copy of the chosen product.
// 	 */
// 	ItemStack getChosenProduct();
// 
// 	/**
// 	 * @return The resource of this product.
// 	 */
// 	IResource getResource();
// 	
// }
// 
// Path: src/main/java/oreregistry/api/registry/IResourceRegistry.java
// public interface IResourceRegistry {
// 
// 	/**
// 	 * Register a type of resource added by your mod.
// 	 */
// 	IResource registerResource(String resourceType);
// 	
// 	/**
// 	 * Returns a read-only map containing resource names and their associated
// 	 * resources.
// 	 */
// 	Map<String, IResource> getRegisteredResources();
// 	
// 	/**
// 	 * Register a {@link IUnificationHandler}.
// 	 */
// 	void registerUnificationHandler(String resourceType, IUnificationHandler unificationHandler);
// 	
// 	/**
// 	 * Returns a read-only map containing all {@link IUnificationHandler}s of the resource of this type.
// 	 */
// 	Collection<IUnificationHandler> getUnificationHandlers(String resourceType);
// 	
// 	/**
// 	 * The current state of the registry process.
// 	 *
// 	 * You only can register resources and products in the active state.
// 	 */
// 	OreRegistryState getState();
// 
// }


// Path: src/main/java/oreregistry/api/IUnificationHandler.java
import oreregistry.api.registry.IProduct;
import oreregistry.api.registry.IResourceRegistry;
import net.minecraft.item.ItemStack;

/*
 * Copyright (c) 2017 Nedelosk, Mezz
 *
 * This work (the MOD) is licensed under the "MIT" License, see LICENSE for details.
 */
package oreregistry.api;



/**
 * This can be used to unify items.
 * <p>
 * You can register this handler with {@link IResourceRegistry#registerUnificationHandler(String, IUnificationHandler)}
 * and get all handlers of a resource with {@link IResourceRegistry#getUnificationHandlers(String)}.
 */
@FunctionalInterface
public interface IUnificationHandler {
	
	void onUnifyItem(ItemStack oldStack, ItemStack newStack, IProduct product);