/*
* 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.blocks.aesthetics.lantern;
import mods.railcraft.common.blocks.aesthetics.EnumBlockMaterial;
import mods.railcraft.common.blocks.aesthetics.slab.BlockRailcraftSlab;
import mods.railcraft.common.core.RailcraftConfig;
import mods.railcraft.common.modules.ModuleManager;
import mods.railcraft.common.plugins.forge.CraftingPlugin;
import mods.railcraft.common.util.inventory.InvTools;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.util.ForgeDirection;
import java.util.*;
/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
public enum EnumLanternMetal implements LanternInfo {
IRON,
GOLD,
COPPER,
TIN,
LEAD,
STEEL;
public static final EnumLanternMetal[] VALUES = values();
public static final Map<String, EnumLanternMetal> NAMES = new HashMap<String, EnumLanternMetal>();
public static final List<EnumLanternMetal> creativeList = new ArrayList<EnumLanternMetal>();
private ItemStack source;
public static void initialize() {
IRON.source = BlockRailcraftSlab.getItem(EnumBlockMaterial.IRON);
GOLD.source = BlockRailcraftSlab.getItem(EnumBlockMaterial.GOLD);
COPPER.source = BlockRailcraftSlab.getItem(EnumBlockMaterial.COPPER);
TIN.source = BlockRailcraftSlab.getItem(EnumBlockMaterial.TIN);
LEAD.source = BlockRailcraftSlab.getItem(EnumBlockMaterial.LEAD);
STEEL.source = BlockRailcraftSlab.getItem(EnumBlockMaterial.STEEL);
for (EnumLanternMetal lamp : VALUES) {
NAMES.put(lamp.name(), lamp);
if (lamp.isEnabled() && lamp.source != null)
CraftingPlugin.addShapedRecipe(lamp.getItem(1), " S ", " T ", " S ", 'S', lamp.getSource(), 'T', new ItemStack(Blocks.torch));
creativeList.add(lamp);
}
}
public static LanternInfo fromOrdinal(int id) {
if (id < 0 || id >= VALUES.length)
return VALUES[0];
return VALUES[id];
}
public static EnumLanternMetal fromName(String name) {
EnumLanternMetal lamp = NAMES.get(name);
if (lamp != null)
return lamp;
return IRON;
}
@Override
public IIcon getTexture(int side) {
return InvTools.getBlockFromStack(source).getIcon(ForgeDirection.UP.ordinal(), source.getItemDamage());
}
@Override
public Block getBlock() {
return BlockLantern.getBlockMetal();
}
@Override
public ItemStack getSource() {
if (source == null) return null;
return source.copy();
}
@Override
public ItemStack getItem() {
return getItem(1);
}
@Override
public ItemStack getItem(int qty) {
Block block = getBlock();
if (block == null) return null;
return new ItemStack(block, qty, ordinal());
}
@Override
public String getTag() {
return "railcraft.lantern.metal." + name().replace("_", ".").toLowerCase(Locale.ENGLISH);
}
@Override
public boolean isEnabled() {
return ModuleManager.isModuleLoaded(ModuleManager.Module.STRUCTURES) && RailcraftConfig.isSubBlockEnabled(getTag()) && getBlock() != null;
}
}