/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.items;
import mods.railcraft.common.plugins.forge.CraftingPlugin;
import mods.railcraft.common.plugins.forge.RailcraftRegistry;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import java.util.List;
import java.util.Locale;
/**
* @author CovertJaguar <http://www.railcraft.info>
*/
public class ItemCircuit extends ItemRailcraft {
public enum EnumCircuit implements IItemMetaEnum {
CONTROLLER(Items.comparator),
RECEIVER(Blocks.redstone_torch),
SIGNAL(Items.repeater);
public static EnumCircuit[] VALUES = values();
private IIcon icon;
private Object alternate;
EnumCircuit(Object alt) {
this.alternate = alt;
}
@Override
public Object getAlternate() {
return alternate;
}
@Override
public Class<? extends ItemRailcraft> getItemClass() {
return ItemCircuit.class;
}
}
;
public ItemCircuit() {
super();
setHasSubtypes(true);
setMaxDamage(0);
}
@Override
public void initItem() {
for (EnumCircuit circuit : EnumCircuit.VALUES) {
ItemStack stack = new ItemStack(this, 1, circuit.ordinal());
RailcraftRegistry.register(stack);
}
}
@Override
public void defineRecipes() {
CraftingPlugin.addShapedRecipe(new ItemStack(this, 1, EnumCircuit.CONTROLLER.ordinal()),
" #S",
"BGR",
"SRL",
'L', "gemLapis",
'#', Items.repeater,
'G', "ingotGold",
'S', new ItemStack(Blocks.wool, 1, 14),
'R', "dustRedstone",
'B', "slimeball");
CraftingPlugin.addShapedRecipe(new ItemStack(this, 1, EnumCircuit.RECEIVER.ordinal()),
" #S",
"BGR",
"SRL",
'L', "gemLapis",
'#', Items.repeater,
'G', "ingotGold",
'S', new ItemStack(Blocks.wool, 1, 13),
'R', "dustRedstone",
'B', "slimeball");
CraftingPlugin.addShapedRecipe(new ItemStack(this, 1, EnumCircuit.SIGNAL.ordinal()),
" #S",
"BGR",
"SRL",
'L', "gemLapis",
'#', Items.repeater,
'G', "ingotGold",
'S', new ItemStack(Blocks.wool, 1, 4),
'R', "dustRedstone",
'B', "slimeball");
}
@Override
public void registerIcons(IIconRegister iconRegister) {
for (EnumCircuit gear : EnumCircuit.VALUES) {
gear.icon = iconRegister.registerIcon("railcraft:part.circuit." + gear.name().toLowerCase(Locale.ENGLISH));
}
}
@Override
public void getSubItems(Item item, CreativeTabs tab, List list) {
for (EnumCircuit circuit : EnumCircuit.VALUES) {
list.add(new ItemStack(this, 1, circuit.ordinal()));
}
}
@Override
public IIcon getIconFromDamage(int damage) {
if (damage >= EnumCircuit.VALUES.length)
return EnumCircuit.RECEIVER.icon;
return EnumCircuit.VALUES[damage].icon;
}
@Override
public String getUnlocalizedName(ItemStack stack) {
int damage = stack.getItemDamage();
if (damage < 0 || damage >= EnumCircuit.VALUES.length)
return "";
switch (EnumCircuit.VALUES[damage]) {
case CONTROLLER:
return "item.railcraft.part.circuit.controller";
case RECEIVER:
return "item.railcraft.part.circuit.receiver";
case SIGNAL:
return "item.railcraft.part.circuit.signal";
default:
return "";
}
}
}