/*
* 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.LootPlugin;
import mods.railcraft.common.plugins.forge.RailcraftRegistry;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraftforge.oredict.OreDictionary;
import java.util.List;
import java.util.Locale;
public class ItemGear extends ItemRailcraft {
public enum EnumGear implements IItemMetaEnum {
GOLD_PLATE("ingotGold"),
IRON("blockIron"),
STEEL("blockSteel"),
BUSHING("ingotTin");
public static final EnumGear[] VALUES = values();
private IIcon icon;
private Object alternate;
EnumGear(Object alt) {
this.alternate = alt;
}
@Override
public Object getAlternate() {
return alternate;
}
@Override
public Class<? extends ItemRailcraft> getItemClass() {
return ItemGear.class;
}
}
public ItemGear() {
setHasSubtypes(true);
setMaxDamage(0);
}
@Override
public void initItem() {
for (EnumGear gear : EnumGear.values()) {
ItemStack stack = new ItemStack(this, 1, gear.ordinal());
RailcraftRegistry.register(stack);
}
OreDictionary.registerOre("gearIron", RailcraftItem.gear.getStack(1, EnumGear.IRON));
ItemStack itemStack = new ItemStack(this, 1, EnumGear.BUSHING.ordinal());
LootPlugin.addLootRailway(itemStack, 1, 8, "gear.bushing");
}
@Override
public void registerIcons(IIconRegister iconRegister) {
for (EnumGear gear : EnumGear.VALUES) {
gear.icon = iconRegister.registerIcon("railcraft:part.gear." + gear.name().toLowerCase(Locale.ENGLISH).replace("_", "."));
}
}
@Override
public void getSubItems(Item item, CreativeTabs tab, List list) {
for (EnumGear gear : EnumGear.VALUES) {
list.add(new ItemStack(this, 1, gear.ordinal()));
}
}
@Override
public IIcon getIconFromDamage(int damage) {
if (damage < 0 || damage >= EnumGear.VALUES.length)
return EnumGear.IRON.icon;
return EnumGear.VALUES[damage].icon;
}
@Override
public void defineRecipes() {
ItemStack bushing = RailcraftItem.gear.getStack(EnumGear.BUSHING);
RailcraftItem gear = RailcraftItem.gear;
CraftingPlugin.addShapedRecipe(gear.getStack(2, EnumGear.BUSHING),
"TT",
"TT",
'T', "ingotTin");
CraftingPlugin.addShapedRecipe(gear.getStack(EnumGear.GOLD_PLATE),
" G ",
"GBG",
" G ",
'G', "nuggetGold",
'B', bushing);
CraftingPlugin.addShapedRecipe(gear.getStack(EnumGear.IRON),
" I ",
"IBI",
" I ",
'I', "ingotIron",
'B', bushing);
CraftingPlugin.addShapedRecipe(gear.getStack(EnumGear.STEEL),
" I ",
"IBI",
" I ",
'I', "ingotSteel",
'B', bushing);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
int damage = stack.getItemDamage();
if (damage < 0 || damage >= EnumGear.VALUES.length)
return "";
switch (EnumGear.VALUES[damage]) {
case GOLD_PLATE:
return "item.railcraft.part.gear.gold.plate";
case IRON:
return "item.railcraft.part.gear.iron";
case STEEL:
return "item.railcraft.part.gear.steel";
case BUSHING:
return "item.railcraft.part.gear.bushing";
default:
return "";
}
}
}