package buildcraftAdditions.reference;
import buildcraftAdditions.blocks.*;
import buildcraftAdditions.blocks.multiBlocks.*;
import buildcraftAdditions.compat.buildcraft.BCItems;
import buildcraftAdditions.config.ConfigurationHandler;
import buildcraftAdditions.core.VersionCheck;
import buildcraftAdditions.reference.enums.EnumMachineUpgrades;
import buildcraftAdditions.tileEntities.*;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.oredict.ShapedOreRecipe;
import java.util.ArrayList;
/**
* Copyright (c) 2014-2015, AEnterprise
* http://buildcraftadditions.wordpress.com/
* Buildcraft Additions is distributed under the terms of GNU GPL v3.0
* Please check the contents of the license located in
* http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/
*/
public class BlockLoader {
public static Block fluidicCompressorBlock;
public static Block chargingStationBlock;
public static Block heatedFurnaceBlock;
public static Block basicCoilBlock;
public static Block basicDusterBlock;
public static Block semiAutomaticDusterBlock;
public static Block mechanicalDusterBlock;
public static Block kineticDusterBlock;
public static Block lavaCoilBlock;
public static Block kineticCoil;
public static Block kinesisPipeWood;
public static Block kinisisPipeStone;
public static BlockKineticEnergyBufferTier1 kebT1;
public static Block kebT2;
public static Block kebT3Core;
public static Block kebT3Plating;
public static Block refineryWalls;
public static Block refineryValve;
public static Block coolingTowerWalls;
public static Block coolingTowerValve;
public static Block itemSorter;
public static Block testBlock;
public static Block backpackStand;
public static Block backpackStandGhost;
public static void loadBlocks() {
//kinesis blocks
kinesisPipeWood = new BlockBCKinesisPipeWood();
kinisisPipeStone = new BlockBCKinisisPipeStone();
//machines
fluidicCompressorBlock = new BlockFluidicCompressor();
chargingStationBlock = new BlockChargingStation();
//furnace + coils
heatedFurnaceBlock = new BlockHeatedFurnace();
basicCoilBlock = new BlockBasicCoil();
lavaCoilBlock = new BlockLavaCoil();
kineticCoil = new BlockKineticCoil();
//dusters
basicDusterBlock = new BlockBasicDuster();
semiAutomaticDusterBlock = new BlockSemiAutomaticDuster();
mechanicalDusterBlock = new BlockMechanicalDuster();
kineticDusterBlock = new BlockKineticDuster();
//KEB
kebT1 = new BlockKineticEnergyBufferTier1();
kebT2 = new MultiBlockKEBT2();
kebT3Core = new MultiBlockKEBT3Core();
kebT3Plating = new MultiBlockKEBT3Plating();
//refinery
refineryWalls = new MultiBlockRefineryWalls();
refineryValve = new MultiBlockRefineryValve();
//cooling tower
coolingTowerWalls = new MultiBlockCoolingTowerWalls();
coolingTowerValve = new MultiBlockCoolingTowerValve();
//sort-o-tron
itemSorter = new BlockItemSorter();
//backpack stand
backpackStand = new BlockBackpackStand();
backpackStandGhost = new BlockGhostBackpackStand();
//other
if (VersionCheck.currentVersion.contains("@")) {
testBlock = new BlockTest();
}
}
public static void addRecipes() {
if (ConfigurationHandler.enabled("ChargingStation")) {
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(chargingStationBlock), "IFI", "GKG", "III", 'I', "ingotIron", 'F', ItemLoader.fluxConductor, 'K', ItemLoader.powerCapsuleTier2, 'G', "gearIron"));
}
if (ConfigurationHandler.enabled("PowerCapsules")) {
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ItemLoader.powerCapsuleTier1), "IGI", "IRI", "IGI", 'I', "ingotIron", 'G', "ingotGold", 'R', Blocks.redstone_block));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ItemLoader.powerCapsuleTier2), "GDG", "GPG", "GDG", 'G', "ingotGold", 'D', ItemLoader.conductivePlate, 'P', ItemLoader.powerCapsuleTier1));
GameRegistry.addRecipe(new ItemStack(ItemLoader.powerCapsuleTier3), "DED", "DPD", "DED", 'D', Items.diamond, 'E', ItemLoader.conductivePlate, 'P', ItemLoader.powerCapsuleTier2);
}
if (ConfigurationHandler.enabled("Duster")) {
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(basicDusterBlock), "GIG", "SLS", "SSS", 'G', "gearStone", 'I', "ingotIron", 'S', Blocks.stone, 'L', "slimeball"));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(basicDusterBlock), "GIG", "SLS", "SSS", 'G', "gearStone", 'I', "ingotIron", 'S', Blocks.stone, 'L', ItemLoader.spring));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(mechanicalDusterBlock), "IFI", "IGI", "III", 'I', "ingotIron", 'F', ItemLoader.fluxConductor, 'G', ItemLoader.grindingWheel));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(semiAutomaticDusterBlock), "IMI", "PLP", "III", 'M', "ingotGold", 'P', Blocks.piston, 'L', "slimeball", 'I', "ingotIron"));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(semiAutomaticDusterBlock), "IMI", "PLP", "III", 'M', "ingotGold", 'P', Blocks.piston, 'L', ItemLoader.spring, 'I', "ingotIron"));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(kineticDusterBlock), "GGG", "G G", "IDI", 'G', "blockGlass", 'I', "gearGold", 'D', Items.diamond));
}
if (ConfigurationHandler.enabled("Coils")) {
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ItemLoader.itemIronWireUnhardened, 2), "DDD", 'D', "dustIron"));
GameRegistry.addSmelting(ItemLoader.itemIronWireUnhardened, new ItemStack(ItemLoader.itemIronWire, 2), 0.5f);
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(basicCoilBlock), "WWW", "WIW", "WWW", 'W', ItemLoader.itemIronWire, 'I', "ingotIron"));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ItemLoader.goldWireUnhardened, 2), "DDD", 'D', "dustGold"));
GameRegistry.addSmelting(ItemLoader.goldWireUnhardened, new ItemStack(ItemLoader.goldWire, 2), 0.5f);
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(lavaCoilBlock), "WWW", "WIW", "WWW", 'W', ItemLoader.goldWire, 'I', "ingotIron"));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ItemLoader.diamondWireUnhardened, 2), "DDD", 'D', "dustDiamond"));
GameRegistry.addSmelting(ItemLoader.diamondWireUnhardened, new ItemStack(ItemLoader.diamondWire, 2), 0.5f);
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(kineticCoil), "WWW", "WIW", "WWW", 'W', ItemLoader.diamondWire, 'I', "ingotIron"));
}
if (ConfigurationHandler.enabled("HeatedFurnace"))
GameRegistry.addRecipe(new ItemStack(heatedFurnaceBlock), "III", "IFI", "III", 'I', ItemLoader.heatPlating, 'F', Blocks.furnace);
if (ConfigurationHandler.enabled("KineticEnergyBuffer")) {
GameRegistry.addRecipe(new ShapedOreRecipe(kebT1.createEmptyKEB(), "IBI", "CBD", "IBI", 'I', "ingotIron", 'B', ItemLoader.powerCapsuleTier1, 'C', ItemLoader.fluxConductor, 'D', ItemLoader.fluxDisperser));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(kebT2), "III", "CBD", "III", 'I', "ingotIron", 'B', ItemLoader.powerCapsuleTier2, 'C', ItemLoader.fluxConductor, 'D', ItemLoader.fluxDisperser));
GameRegistry.addRecipe(new ItemStack(kebT3Core), "DBD", "CBP", "DBD", 'D', Items.diamond, 'B', ItemLoader.powerCapsuleTier3, 'C', ItemLoader.fluxConductor, 'P', ItemLoader.fluxDisperser);
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(kebT3Plating), "CGD", "GGG", "III", 'C', ItemLoader.fluxConductor, 'D', ItemLoader.fluxDisperser, 'G', "ingotGold", 'I', "ingotIron"));
}
if (ConfigurationHandler.enabled("MultiBlockRefining")) {
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(refineryWalls, 20), "PPP", "PDP", "PPP", 'P', ItemLoader.heatPlating, 'D', "dustDiamond"));
GameRegistry.addRecipe(new ItemStack(refineryValve, 4), " P ", "PBP", " P ", 'P', ItemLoader.heatPlating, 'B', Blocks.iron_bars);
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(coolingTowerWalls, 20), "PPP", "PDP", "PPP", 'P', ItemLoader.heatPlating, 'D', "dustRedstone"));
GameRegistry.addRecipe(new ItemStack(coolingTowerValve), "V", 'V', refineryValve);
}
if (ConfigurationHandler.enabled("MachineUpgrades")) {
GameRegistry.addRecipe(new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.AUTO_OUTPUT.ordinal()), "IEI", "PBP", "IEI", 'I', Items.iron_ingot, 'E', Items.ender_pearl, 'P', Blocks.piston, 'B', ItemLoader.blankUpgrade);
GameRegistry.addRecipe(new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.EFFICIENCY_1.ordinal()), "CIC", "IBI", "CIC", 'C', ItemLoader.powerCapsuleTier1, 'I', Items.iron_ingot, 'B', ItemLoader.blankUpgrade);
GameRegistry.addRecipe(new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.EFFICIENCY_2.ordinal()), "GCG", "UGU", "GCG", 'G', Items.gold_ingot, 'C', ItemLoader.powerCapsuleTier2, 'U', new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.EFFICIENCY_1.ordinal()));
GameRegistry.addRecipe(new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.EFFICIENCY_3.ordinal()), "CDC", "UGU", "CDC", 'C', ItemLoader.powerCapsuleTier3, 'D', Items.diamond, 'U', new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.EFFICIENCY_2.ordinal()), 'G', Items.gold_ingot);
GameRegistry.addRecipe(new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.SPEED_1.ordinal()), "IGI", "IBI", "IGI", 'I', Items.iron_ingot, 'G', Items.glowstone_dust, 'B', ItemLoader.blankUpgrade);
GameRegistry.addRecipe(new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.SPEED_2.ordinal()), "GBG", "GUG", "GBG", 'G', Items.gold_ingot, 'B', Blocks.glowstone, 'U', new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.SPEED_1.ordinal()));
GameRegistry.addRecipe(new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.SPEED_3.ordinal()), "GBG", "DUD", "GBG", 'G', Items.gold_ingot, 'B', Blocks.glowstone, 'D', Items.diamond, 'U', new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.SPEED_2.ordinal()));
GameRegistry.addRecipe(new ItemStack(ItemLoader.upgrade, 1, EnumMachineUpgrades.AUTO_IMPORT.ordinal()), "ISI", "EBE", "ISI", 'I', Items.iron_ingot, 'E', Items.ender_pearl, 'S', Blocks.sticky_piston, 'B', ItemLoader.blankUpgrade);
}
if (ConfigurationHandler.enabled("ColorSorter"))
GameRegistry.addRecipe(new ItemStack(itemSorter), "SUS", "PCP", "SGS", 'S', Blocks.stone, 'U', EnumMachineUpgrades.AUTO_OUTPUT.getItemStack(), 'P', BCItems.PIPE_ITEMS_LAPIS, 'C', Blocks.chest, 'G', BCItems.PIPE_ITEMS_GOLD);
if (!ConfigurationHandler.forceEnableBCRefinery) {
ItemStack stack = new ItemStack(BCItems.REFINERY);
ArrayList recipeList = (ArrayList) CraftingManager.getInstance().getRecipeList();
for (int t = 0; t < recipeList.size(); t++) {
IRecipe recipe = (IRecipe) recipeList.get(t);
ItemStack recipeResult = recipe.getRecipeOutput();
if (ItemStack.areItemStacksEqual(stack, recipeResult)) {
recipeList.remove(t);
break;
}
}
}
}
public static void registerTileEntities() {
GameRegistry.registerTileEntity(TileFluidicCompressor.class, "TileFluidicCompressor");
GameRegistry.registerTileEntity(TileChargingStation.class, "TileChargingStation");
GameRegistry.registerTileEntity(TileHeatedFurnace.class, "TileHeatedFurnace");
GameRegistry.registerTileEntity(TileBasicCoil.class, "TileBasicCoil");
GameRegistry.registerTileEntity(TileLavaCoil.class, "TileCoilLava");
GameRegistry.registerTileEntity(TileKineticCoil.class, "TileCoilKinetic");
GameRegistry.registerTileEntity(TileBasicDuster.class, "TileBasicDuster");
GameRegistry.registerTileEntity(TileSemiAutomaticDuster.class, "TileSemiAutomaticDuster");
GameRegistry.registerTileEntity(TileMechanicalDuster.class, "TileMechanicalDuster");
GameRegistry.registerTileEntity(TileKineticDuster.class, "TileKineticDuster");
GameRegistry.registerTileEntity(TileKineticEnergyBufferTier1.class, "TileKineticEnergyBufferTier1");
GameRegistry.registerTileEntity(TileKEBT2.class, "TileKineticEnergyBufferTier2");
GameRegistry.registerTileEntity(TileKEBT3.class, "TileKineticEnergyBufferTier3");
GameRegistry.registerTileEntity(TileRefinery.class, "TileRefinery");
GameRegistry.registerTileEntity(TileCoolingTower.class, "CoolingTower");
GameRegistry.registerTileEntity(TileBCKinesisPipeStonePlacer.class, "BCKinesisPipeStonePlacer");
GameRegistry.registerTileEntity(TileBCKinesisPipeWoodPlacer.class, "BCKinesisPipeWoodPlacer");
GameRegistry.registerTileEntity(TileBackpackStand.class, "TileBackpackStand");
}
}