/* * 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 java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import mods.railcraft.common.blocks.aesthetics.brick.BlockBrick; import mods.railcraft.common.blocks.aesthetics.brick.BrickVariant; import mods.railcraft.common.blocks.aesthetics.brick.EnumBrick; 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; /** * * @author CovertJaguar <http://www.railcraft.info> */ public enum EnumLanternStone implements LanternInfo { ABYSSAL, BLEACHEDBONE, BLOODSTAINED, FROSTBOUND, INFERNAL, NETHER, QUARRIED, SANDY, SANDSTONE, STONE; public static final EnumLanternStone[] VALUES = values(); public static final Map<String, EnumLanternStone> NAMES = new HashMap<String, EnumLanternStone>(); public static final List<EnumLanternStone> creativeList = new ArrayList<EnumLanternStone>(); private ItemStack source; public static void initialize() { ABYSSAL.source = EnumBrick.ABYSSAL.get(BrickVariant.BLOCK, 1); BLEACHEDBONE.source = EnumBrick.BLEACHEDBONE.get(BrickVariant.BLOCK, 1); BLOODSTAINED.source = EnumBrick.BLOODSTAINED.get(BrickVariant.BLOCK, 1); FROSTBOUND.source = EnumBrick.FROSTBOUND.get(BrickVariant.BLOCK, 1); INFERNAL.source = EnumBrick.INFERNAL.get(BrickVariant.BLOCK, 1); NETHER.source = EnumBrick.NETHER.get(BrickVariant.BLOCK, 1); QUARRIED.source = EnumBrick.QUARRIED.get(BrickVariant.BLOCK, 1); SANDY.source = EnumBrick.SANDY.get(BrickVariant.BLOCK, 1); SANDSTONE.source = new ItemStack(Blocks.stone_slab, 1, 1); STONE.source = new ItemStack(Blocks.stone_slab, 1, 0); for (EnumLanternStone 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 EnumLanternStone fromOrdinal(int id) { if (id < 0 || id >= VALUES.length) return VALUES[0]; return VALUES[id]; } public static EnumLanternStone fromName(String name) { EnumLanternStone lamp = NAMES.get(name); if (lamp != null) return lamp; return ABYSSAL; } @Override public IIcon getTexture(int side) { return InvTools.getBlockFromStack(source).getIcon(ForgeDirection.UP.ordinal(), source.getItemDamage()); } @Override public Block getBlock() { return BlockLantern.getBlockStone(); } @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.stone." + name().replace("_", ".").toLowerCase(Locale.ENGLISH); } @Override public boolean isEnabled() { return ModuleManager.isModuleLoaded(ModuleManager.Module.STRUCTURES) && RailcraftConfig.isSubBlockEnabled(getTag()) && getBlock() != null; } }