/* * 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.stairs; import cpw.mods.fml.common.registry.GameRegistry; import mods.railcraft.api.crafting.IRockCrusherRecipe; import mods.railcraft.api.crafting.RailcraftCraftingManager; import mods.railcraft.common.blocks.BlockFactory; import mods.railcraft.common.blocks.aesthetics.EnumBlockMaterial; import mods.railcraft.common.blocks.aesthetics.brick.BrickVariant; import mods.railcraft.common.blocks.aesthetics.brick.EnumBrick; import mods.railcraft.common.core.Railcraft; import mods.railcraft.common.modules.ModuleManager; import mods.railcraft.common.plugins.forestry.ForestryPlugin; import mods.railcraft.common.plugins.forge.CraftingPlugin; import mods.railcraft.common.plugins.forge.RailcraftRegistry; import net.minecraft.item.ItemStack; import static mods.railcraft.common.blocks.aesthetics.EnumBlockMaterial.*; import static mods.railcraft.common.blocks.aesthetics.stairs.BlockRailcraftStairs.getItem; /** * @author CovertJaguar <http://www.railcraft.info/> */ public class BlockFactoryStairs extends BlockFactory { public BlockFactoryStairs() { super("stair"); } @Override protected void doBlockInit() { int renderId = Railcraft.getProxy().getRenderId(); BlockRailcraftStairs.block = new BlockRailcraftStairs(renderId); BlockRailcraftStairs.block.setBlockName("railcraft.stair"); RailcraftRegistry.register(BlockRailcraftStairs.block, ItemStair.class); GameRegistry.registerTileEntity(TileStair.class, "RCStairTile"); for (EnumBlockMaterial mat : EnumBlockMaterial.VALUES) { RailcraftRegistry.register(getItem(mat)); switch (mat) { case SNOW: case ICE: break; default: ForestryPlugin.addBackpackItem("builder", getItem(mat)); } } } @Override protected void doRecipeInit(ModuleManager.Module module) { EnumBlockMaterial.initialize(); for (EnumBlockMaterial mat : EnumBlockMaterial.VALUES) { if (BlockRailcraftStairs.isEnabled(mat) && mat.getSourceItem() != null) { CraftingPlugin.addShapedRecipe(BlockRailcraftStairs.getItem(mat, 4), "S ", "SS ", "SSS", 'S', mat.getSourceItem()); IRockCrusherRecipe recipe = RailcraftCraftingManager.rockCrusher.createNewRecipe(BlockRailcraftStairs.getItem(mat), true, false); recipe.addOutput(mat.getSourceItem(), 1.0f); } } addRockCrusherRecipe(EnumBrick.ABYSSAL, ABYSSAL_BLOCK, ABYSSAL_BRICK, ABYSSAL_COBBLE, ABYSSAL_FITTED); addRockCrusherRecipe(EnumBrick.BLEACHEDBONE, BLEACHEDBONE_BLOCK, BLEACHEDBONE_BRICK, BLEACHEDBONE_COBBLE, BLEACHEDBONE_FITTED); addRockCrusherRecipe(EnumBrick.BLOODSTAINED, BLOODSTAINED_BLOCK, BLOODSTAINED_BRICK, BLOODSTAINED_COBBLE, BLOODSTAINED_FITTED); addRockCrusherRecipe(EnumBrick.FROSTBOUND, FROSTBOUND_BLOCK, FROSTBOUND_BRICK, FROSTBOUND_COBBLE, FROSTBOUND_FITTED); addRockCrusherRecipe(EnumBrick.INFERNAL, INFERNAL_BLOCK, INFERNAL_BRICK, INFERNAL_COBBLE, INFERNAL_FITTED); addRockCrusherRecipe(EnumBrick.NETHER, NETHER_BLOCK, NETHER_COBBLE, NETHER_FITTED); addRockCrusherRecipe(EnumBrick.QUARRIED, QUARRIED_BLOCK, QUARRIED_BRICK, QUARRIED_COBBLE, QUARRIED_FITTED); addRockCrusherRecipe(EnumBrick.SANDY, SANDY_BLOCK, SANDY_BRICK, SANDY_COBBLE, SANDY_FITTED); } private void addRockCrusherRecipe(EnumBrick brick, EnumBlockMaterial... types) { if (brick.getBlock() == null) return; ItemStack output = brick.get(BrickVariant.COBBLE, 1); for (EnumBlockMaterial mat : types) { if (!BlockRailcraftStairs.isEnabled(mat)) continue; IRockCrusherRecipe recipe = RailcraftCraftingManager.rockCrusher.createNewRecipe(getItem(mat), true, false); recipe.addOutput(output, 1.0F); } } }