package openblocks.common.item;
import com.google.common.collect.ImmutableList;
import cpw.mods.fml.common.Loader;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
import openblocks.Config;
import openblocks.OpenBlocks;
import openmods.infobook.ICustomBookEntryProvider;
import openmods.item.IMetaItem;
public enum MetasGeneric {
gliderWing {
@Override
public IMetaItem createMetaItem() {
ItemStack result = newItemStack();
return new MetaGeneric("gliderwing",
new ShapedOreRecipe(result, " sl", "sll", "lll", 's', "stickWood", 'l', Items.leather),
new ShapedOreRecipe(result, "ls ", "lls", "lll", 's', "stickWood", 'l', Items.leather));
}
},
beam {
@Override
public IMetaItem createMetaItem() {
ItemStack result = newItemStack(2);
return new MetaGeneric("beam",
new ShapedOreRecipe(result, "iii", "b y", "iii", 'i', "ingotIron", 'b', "dyeBlack", 'y', "dyeYellow"),
new ShapedOreRecipe(result, "iii", "y b", "iii", 'i', "ingotIron", 'b', "dyeBlack", 'y', "dyeYellow"));
}
},
craneEngine {
@Override
public IMetaItem createMetaItem() {
ItemStack result = newItemStack();
return new MetaGeneric("crane_engine",
new ShapedOreRecipe(result, "iii", "isi", "iri", 'i', "ingotIron", 's', "stickWood", 'r', "dustRedstone"));
}
},
craneMagnet {
@Override
public IMetaItem createMetaItem() {
ItemStack result = newItemStack();
return new MetaGeneric("crane_magnet",
new ShapedOreRecipe(result, "biy", "iri", 'i', "ingotIron", 'r', "dustRedstone", 'b', "dyeBlack", 'y', "dyeYellow"),
new ShapedOreRecipe(result, "yib", "iri", 'i', "ingotIron", 'r', "dustRedstone", 'b', "dyeBlack", 'y', "dyeYellow"));
}
},
miracleMagnet {
@Override
public IMetaItem createMetaItem() {
ItemStack result = newItemStack();
ItemStack magnet = craneMagnet.newItemStack();
return new MetaMiracleMagnet("miracle_magnet",
new ShapedOreRecipe(result, "rer", "eme", "rer", 'r', "dustRedstone", 'e', Items.ender_pearl, 'm', magnet),
new ShapedOreRecipe(result, "ere", "rmr", "ere", 'r', "dustRedstone", 'e', Items.ender_pearl, 'm', magnet));
}
@Override
public boolean isEnabled() {
return Loader.isModLoaded(openmods.Mods.OPENPERIPHERALCORE) && Config.enableCraneTurtles;
}
},
line {
@Override
public IMetaItem createMetaItem() {
ItemStack result = newItemStack(2);
return new MetaGeneric("line",
new ShapedOreRecipe(result, "sss", "bbb", "sss", 's', Items.string, 'b', "slimeball"));
}
},
mapController {
@Override
public IMetaItem createMetaItem() {
ItemStack result = newItemStack(1);
return new MetaGeneric("map_controller",
new ShapedOreRecipe(result, " r ", "rgr", " r ", 'r', "dustRedstone", 'g', "ingotGold"));
}
},
mapMemory {
@Override
public IMetaItem createMetaItem() {
ItemStack result = newItemStack(1);
return new MetaGeneric("map_memory",
new ShapedOreRecipe(result, "rg", "rg", "rg", 'g', "nuggetGold", 'r', "dustRedstone"));
}
},
/**
* Deprecated. Moved to ItemCursor
* Can't remove it from here because it'll re-index everyones items..
* I guess the next time we add a meta, replace this one.
*/
cursor {
@Override
public boolean isEnabled() {
return false;
}
@Override
public IMetaItem createMetaItem() {
return null;
}
},
assistantBase {
@Override
public IMetaItem createMetaItem() {
ItemStack result = newItemStack();
return new MetaGeneric("assistant_base",
new ShapedOreRecipe(result, "iei", "iri", 'i', "ingotIron", 'e', Items.ender_pearl, 'r', "dustRedstone"));
}
},
unpreparedStencil {
@Override
public IMetaItem createMetaItem() {
ItemStack result = newItemStack();
return new MetaGeneric("unprepared_stencil",
new ShapedOreRecipe(result, " p ", "pip", " p ", 'p', Items.paper, 'i', "ingotIron"));
}
},
sketchingPencil {
@Override
public IMetaItem createMetaItem() {
ItemStack result = newItemStack();
return new MetaGeneric("sketching_pencil",
new ShapedOreRecipe(result, "c ", " s ", " s", 'c', new ItemStack(Items.coal, 1, OreDictionary.WILDCARD_VALUE), 's', "stickWood"));
}
};
public ItemStack newItemStack(int size) {
return new ItemStack(OpenBlocks.Items.generic, size, ordinal());
}
public ItemStack newItemStack() {
return new ItemStack(OpenBlocks.Items.generic, 1, ordinal());
}
public boolean isA(ItemStack stack) {
return (stack.getItem() instanceof ItemOBGeneric) && (stack.getItemDamage() == ordinal());
}
protected abstract IMetaItem createMetaItem();
protected boolean isEnabled() {
return true;
}
public static void registerItems() {
for (MetasGeneric m : values())
if (m.isEnabled()) OpenBlocks.Items.generic.registerItem(m.ordinal(), m.createMetaItem());
}
public static class DocProvider implements ICustomBookEntryProvider {
@Override
public Iterable<Entry> getBookEntries() {
return ImmutableList.of(new ICustomBookEntryProvider.Entry("unprepared_stencil", MetasGeneric.unpreparedStencil.newItemStack()));
}
}
}