package com.jaquadro.minecraft.gardencontainers.item.crafting;
import com.jaquadro.minecraft.gardencontainers.GardenContainers;
import com.jaquadro.minecraft.gardencontainers.core.ModBlocks;
import com.jaquadro.minecraft.gardencontainers.core.ModItems;
import net.minecraft.item.ItemStack;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PotteryManager
{
private static final PotteryManager instance = new PotteryManager();
private List<ItemStack> patternList = new ArrayList<ItemStack>();
private Map<ItemStack, Integer> targetList = new HashMap<ItemStack, Integer>();
public static PotteryManager instance () {
return instance;
}
private PotteryManager () {
for (int i = 1; i < 256; i++) {
if (GardenContainers.config.hasPattern(i))
registerPattern(new ItemStack(ModItems.potteryPattern, 1, i));
}
registerTarget(new ItemStack(ModBlocks.largePot, 1, 1));
//registerTarget(new ItemStack(ModularPots.largePot));
//for (int i = 0; i < 16; i++)
// registerTarget(new ItemStack(ModularPots.largePotColored, 1, i));
}
public void registerPattern (ItemStack itemStack) {
if (itemStack != null)
patternList.add(itemStack);
}
public void registerTarget (ItemStack itemStack) {
if (itemStack != null)
registerTarget(itemStack, 8);
}
public void registerTarget (ItemStack itemStack, int patternDataShift) {
targetList.put(itemStack, patternDataShift);
}
public boolean isRegisteredPattern (ItemStack itemStack) {
if (itemStack == null)
return false;
for (ItemStack item : patternList) {
if (item.getItem() == itemStack.getItem() && item.getItemDamage() == itemStack.getItemDamage())
return true;
}
return false;
}
public boolean isRegisteredTarget (ItemStack itemStack) {
if (itemStack == null)
return false;
for (ItemStack item : targetList.keySet()) {
if (item.getItem() == itemStack.getItem() && item.getItemDamage() == itemStack.getItemDamage())
return true;
}
return false;
}
public ItemStack getStampResult (ItemStack pattern, ItemStack target) {
if (target == null || !isRegisteredPattern(pattern))
return null;
for (Map.Entry<ItemStack, Integer> entry : targetList.entrySet()) {
ItemStack item = entry.getKey();
if (item.getItem() != target.getItem() || item.getItemDamage() != target.getItemDamage())
continue;
ItemStack result = target.copy();
result.stackSize = 1;
result.setItemDamage(target.getItemDamage() | (pattern.getItemDamage() << entry.getValue()));
return result;
}
return null;
}
}