/*
* Copyright (c) CovertJaguar, 2015 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.brick;
import mods.railcraft.api.crafting.IRockCrusherRecipe;
import mods.railcraft.api.crafting.RailcraftCraftingManager;
import mods.railcraft.common.blocks.BlockFactory;
import mods.railcraft.common.blocks.aesthetics.cube.EnumCube;
import mods.railcraft.common.blocks.aesthetics.cube.ReplacerCube;
import mods.railcraft.common.items.ItemRailcraft;
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 mods.railcraft.common.plugins.misc.MicroBlockPlugin;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import java.util.Locale;
import static mods.railcraft.common.blocks.aesthetics.brick.BrickVariant.*;
/**
* Created by CovertJaguar on 3/12/2015.
*/
public enum EnumBrick {
ABYSSAL {
@Override
public void initRecipes() {
if (EnumCube.ABYSSAL_STONE.isEnabled()) {
CraftingPlugin.addFurnaceRecipe(EnumCube.ABYSSAL_STONE.getItem(), new ItemStack(getBlock(), 1, 2), 0.2F);
IRockCrusherRecipe recipe = RailcraftCraftingManager.rockCrusher.createNewRecipe(EnumCube.ABYSSAL_STONE.getItem(), true, false);
recipe.addOutput(get(COBBLE, 1), 1.0F);
}
}
},
BLEACHEDBONE {
Item bleachedClay;
@Override
public void initBlock() {
bleachedClay = new ItemRailcraft().setUnlocalizedName("railcraft.part.bleached.clay");
RailcraftRegistry.register(bleachedClay);
}
@Override
public void initRecipes() {
if (bleachedClay != null) {
CraftingPlugin.addShapelessRecipe(new ItemStack(bleachedClay), new ItemStack(Items.clay_ball), new ItemStack(Items.dye, 1, 15), new ItemStack(Items.dye, 1, 15), new ItemStack(Items.dye, 1, 15));
CraftingPlugin.addFurnaceRecipe(new ItemStack(bleachedClay), new ItemStack(getBlock(), 1, 2), 0.3F);
}
}
},
BLOODSTAINED {
@Override
public void initRecipes() {
CraftingPlugin.addShapelessRecipe(new ItemStack(getBlock(), 1, 2), new ItemStack(Blocks.sandstone, 1, 2), new ItemStack(Items.rotten_flesh));
CraftingPlugin.addShapelessRecipe(new ItemStack(getBlock(), 1, 2), new ItemStack(Blocks.sandstone, 1, 2), new ItemStack(Items.beef));
}
},
FROSTBOUND {
@Override
public void initRecipes() {
CraftingPlugin.addShapedRecipe(new ItemStack(getBlock(), 8, 2),
"III",
"ILI",
"III",
'I', new ItemStack(Blocks.ice),
'L', "gemLapis");
}
},
INFERNAL {
@Override
public void initRecipes() {
((ReplacerCube) EnumCube.INFERNAL_BRICK.getBlockDef()).block = getBlock();
CraftingPlugin.addShapedRecipe(new ItemStack(getBlock(), 2, 2),
"MB",
"BM",
'B', new ItemStack(Blocks.nether_brick),
'M', new ItemStack(Blocks.soul_sand));
}
},
QUARRIED {
@Override
public void initRecipes() {
if (EnumCube.QUARRIED_STONE.isEnabled()) {
CraftingPlugin.addFurnaceRecipe(EnumCube.QUARRIED_STONE.getItem(), new ItemStack(getBlock(), 1, 2), 0.2F);
IRockCrusherRecipe recipe = RailcraftCraftingManager.rockCrusher.createNewRecipe(EnumCube.QUARRIED_STONE.getItem(), true, false);
recipe.addOutput(get(COBBLE, 1), 1.0F);
}
}
},
SANDY {
@Override
public void initRecipes() {
((ReplacerCube) EnumCube.SANDY_BRICK.getBlockDef()).block = getBlock();
CraftingPlugin.addShapedRecipe(new ItemStack(getBlock(), 1, 2),
"BM",
"MB",
'B', "ingotBrick",
'M', new ItemStack(Blocks.sand));
}
},
NETHER {
@Override
public ItemStack get(BrickVariant variant, int qty) {
if (variant == BrickVariant.BRICK)
return new ItemStack(Blocks.nether_brick, qty);
return super.get(variant, qty);
}
@Override
public void initRecipes() {
CraftingPlugin.addFurnaceRecipe(new ItemStack(Blocks.nether_brick), get(BLOCK, 1), 0);
}
@Override
protected void initVariant(BrickVariant variant) {
if (variant != BrickVariant.BRICK)
super.initVariant(variant);
}
},;
public static final EnumBrick[] VALUES = values();
private BlockBrick block;
public final BlockBrick getBlock() {
return block;
}
public final String themeTag() {
return name().toLowerCase(Locale.ENGLISH);
}
protected void initBlock() {
}
protected void initRecipes() {
}
protected void initVariant(BrickVariant variant) {
MicroBlockPlugin.addMicroBlockCandidate(getBlock(), variant.ordinal());
}
public final ItemStack get(BrickVariant variant) {
return get(variant, 1);
}
public ItemStack get(BrickVariant variant, int qty) {
if (block == null)
return null;
return new ItemStack(getBlock(), qty, variant.ordinal());
}
public final BlockFactory makeFactory() {
return new BlockFactory("brick." + themeTag()) {
@Override
protected void doBlockInit() {
block = new BlockBrick(EnumBrick.this);
block.setBlockName("railcraft.brick." + themeTag());
RailcraftRegistry.register(block, ItemBrick.class);
ForestryPlugin.addBackpackItem("builder", block);
for (BrickVariant variant : BrickVariant.VALUES) {
EnumBrick.this.initVariant(variant);
}
EnumBrick.this.initBlock();
}
@Override
protected void doRecipeInit(ModuleManager.Module module) {
CraftingPlugin.addShapelessRecipe(get(BRICK, 1), get(FITTED, 1));
CraftingPlugin.addShapelessRecipe(get(FITTED, 1), get(BLOCK, 1));
CraftingPlugin.addShapedRecipe(get(ORNATE, 8),
"III",
"I I",
"III",
'I', get(BLOCK, 1));
CraftingPlugin.addShapelessRecipe(get(ETCHED, 1), get(BLOCK, 1), new ItemStack(Items.gunpowder));
IRockCrusherRecipe recipe = RailcraftCraftingManager.rockCrusher.createNewRecipe(new ItemStack(block), false, false);
recipe.addOutput(get(COBBLE, 1), 1.0F);
CraftingPlugin.addFurnaceRecipe(get(COBBLE, 1), get(BLOCK, 1), 0.0F);
EnumBrick.this.initRecipes();
}
};
}
}