BiomesOPlenty/src/main/java/biomesoplenty/common/init/ModCrafting.java

197 lines
9.3 KiB
Java

/*******************************************************************************
* Copyright 2014-2016, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.init;
import static biomesoplenty.common.util.inventory.CraftingUtil.*;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.enums.*;
import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.block.*;
import biomesoplenty.common.crafting.BiomeEssenceRecipe;
import biomesoplenty.common.handler.FurnaceFuelHandler;
import biomesoplenty.common.item.ItemJarFilled;
import biomesoplenty.core.BiomesOPlenty;
import com.google.common.base.CaseFormat;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
public class ModCrafting
{
public static void init()
{
addOreRegistration();
addCraftingRecipes();
addSmeltingRecipes();
}
private static void addCraftingRecipes()
{
registerCustomRecipe(new BiomeEssenceRecipe(), "biome_essence");
}
private static void addSmeltingRecipes()
{
// Register smelting recipes
GameRegistry.addSmelting(new ItemStack(BOPBlocks.mud), new ItemStack(Blocks.DIRT), 0.1F);
GameRegistry.addSmelting(new ItemStack(BOPBlocks.white_sand), new ItemStack(Blocks.GLASS), 0.1F);
GameRegistry.addSmelting(BlockBOPPlant.paging.getVariantItem(BOPPlants.TINYCACTUS), new ItemStack(Items.DYE, 1, EnumDyeColor.GREEN.getDyeDamage()), 0.2F);
GameRegistry.addSmelting(BOPItems.mudball, new ItemStack(BOPItems.mud_brick), 0.1F);
for (BOPWoods wood : BOPWoods.values())
{
if (wood.canMakeCharcoal())
{
GameRegistry.addSmelting(BlockBOPLog.paging.getVariantItem(wood), new ItemStack(Items.COAL, 1, 1), 0.15F);
}
}
for (BOPGems gem : BOPGems.values())
{
GameRegistry.addSmelting(new ItemStack(BOPBlocks.gem_ore, 1, gem.ordinal()), new ItemStack(BOPItems.gem, 1, gem.ordinal()), 1.0F);
}
// Register items which can be used as fuel
FurnaceFuelHandler bopFuel = new FurnaceFuelHandler();
GameRegistry.registerFuelHandler(bopFuel);
bopFuel.addFuel(BOPBlocks.sapling_0, 100);
bopFuel.addFuel(BOPBlocks.sapling_1, 100);
bopFuel.addFuel(BOPBlocks.sapling_2, 100);
bopFuel.addFuel(BOPBlocks.wood_slab_0, 150);
bopFuel.addFuel(BOPBlocks.wood_slab_1, 150);
// Note, we don't have to add all the other wood blocks - by default any block with Material = wood burns with value of 300
// See TileEntityFurnace.getItemBurnTime()
bopFuel.addFuel(BOPItems.boat_sacred_oak, 400);
bopFuel.addFuel(BOPItems.boat_cherry, 400);
bopFuel.addFuel(BOPItems.boat_umbran, 400);
bopFuel.addFuel(BOPItems.boat_fir, 400);
bopFuel.addFuel(BOPItems.boat_ethereal, 400);
bopFuel.addFuel(BOPItems.boat_magic, 400);
bopFuel.addFuel(BOPItems.boat_mangrove, 400);
bopFuel.addFuel(BOPItems.boat_palm, 400);
bopFuel.addFuel(BOPItems.boat_redwood, 400);
bopFuel.addFuel(BOPItems.boat_willow, 400);
bopFuel.addFuel(BOPItems.boat_pine, 400);
bopFuel.addFuel(BOPItems.boat_hellbark, 400);
bopFuel.addFuel(BOPItems.boat_jacaranda, 400);
bopFuel.addFuel(BOPItems.boat_mahogany, 400);
bopFuel.addFuel(BOPItems.boat_ebony, 400);
bopFuel.addFuel(BOPItems.boat_eucalyptus, 400);
bopFuel.addFuel(BOPItems.ash, 400); // TODO: really? 400? Ash is already burnt but burns better than wooden planks?
}
private static void addOreRegistration()
{
//Registration in Ore Dictionary
OreDictionary.registerOre("stickWood", new ItemStack(BOPBlocks.bamboo));
OreDictionary.registerOre("stickWood", BlockBOPPlant.paging.getVariantItem(BOPPlants.RIVERCANE));
OreDictionary.registerOre("ballMud", new ItemStack(BOPItems.mudball));
OreDictionary.registerOre("blockMeatRaw", new ItemStack(BOPBlocks.flesh, 1, 0));
OreDictionary.registerOre("grass", BOPBlocks.grass);
OreDictionary.registerOre("dirt", BOPBlocks.dirt);
OreDictionary.registerOre("blockMud", new ItemStack(BOPBlocks.mud));
OreDictionary.registerOre("sand", new ItemStack(BOPBlocks.white_sand));
OreDictionary.registerOre("sandstone", new ItemStack(BOPBlocks.white_sandstone));
OreDictionary.registerOre("foodMushroompowder", new ItemStack(BOPItems.shroompowder));
OreDictionary.registerOre("foodFilledhoneycomb", new ItemStack(BOPItems.filled_honeycomb));
OreDictionary.registerOre("foodBowlofrice", new ItemStack(BOPItems.ricebowl));
OreDictionary.registerOre("cropPeach", new ItemStack(BOPItems.peach));
OreDictionary.registerOre("cropPersimmon", new ItemStack(BOPItems.persimmon));
OreDictionary.registerOre("cropPear", new ItemStack(BOPItems.pear));
OreDictionary.registerOre("listAllfruit", new ItemStack(BOPItems.peach));
OreDictionary.registerOre("listAllfruit", new ItemStack(BOPItems.persimmon));
OreDictionary.registerOre("listAllfruit", new ItemStack(BOPItems.pear));
OreDictionary.registerOre("dyeBlue", new ItemStack(BOPItems.blue_dye));
OreDictionary.registerOre("dyeBrown", new ItemStack(BOPItems.brown_dye));
OreDictionary.registerOre("dyeGreen", new ItemStack(BOPItems.green_dye));
OreDictionary.registerOre("dyeWhite", new ItemStack(BOPItems.white_dye));
OreDictionary.registerOre("dyeBlack", new ItemStack(BOPItems.black_dye));
OreDictionary.registerOre("record", new ItemStack(BOPItems.record_wanderer));
for (BOPGems gem : BOPGems.values())
{
String gemName = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, gem.name());
OreDictionary.registerOre("gem"+gemName, new ItemStack(BOPItems.gem, 1, gem.ordinal()));
OreDictionary.registerOre("ore"+gemName, new ItemStack(BOPBlocks.gem_ore , 1, gem.ordinal()));
OreDictionary.registerOre("block"+gemName, new ItemStack(BOPBlocks.gem_block, 1, gem.ordinal()));
}
for (BOPFlowers flower : BOPFlowers.values())
{
String flowerName = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, flower.name());
OreDictionary.registerOre("flower"+flowerName, BlockBOPFlower.paging.getVariantItem(flower));
}
for (BOPPlants plant : BOPPlants.values())
{
String plantName = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, plant.name());
OreDictionary.registerOre("plant"+plantName, BlockBOPPlant.paging.getVariantItem(plant));
}
OreDictionary.registerOre("plantFlax", ((BlockBOPDoublePlant)BOPBlocks.double_plant).getVariantItem(BlockBOPDoublePlant.DoublePlantType.FLAX));
OreDictionary.registerOre("plantCattail", ((BlockBOPDoublePlant)BOPBlocks.double_plant).getVariantItem(BlockBOPDoublePlant.DoublePlantType.TALL_CATTAIL));
for (BOPTrees tree : BOPTrees.values())
{
OreDictionary.registerOre("treeLeaves", BlockBOPLeaves.paging.getVariantItem(tree));
if (tree.hasSapling())
{
OreDictionary.registerOre("treeSapling", BlockBOPSapling.paging.getVariantItem(tree));
}
}
// TODO: implement fruit trees
// OreDictionary.registerOre("treeLeaves", new ItemStack(BOPCBlocks.appleLeaves, 1, OreDictionary.WILDCARD_VALUE));
// OreDictionary.registerOre("treeLeaves", new ItemStack(BOPCBlocks.persimmonLeaves, 1, OreDictionary.WILDCARD_VALUE));
for (BOPWoods wood : BOPWoods.values())
{
OreDictionary.registerOre("logWood", BlockBOPLog.paging.getVariantItem(wood));
if (wood.hasPlanks())
{
OreDictionary.registerOre("plankWood", BlockBOPPlanks.paging.getVariantItem(wood));
OreDictionary.registerOre("slabWood", BlockBOPHalfWoodSlab.paging.getVariantItem(wood));
OreDictionary.registerOre("stairWood", new ItemStack(BlockBOPWoodStairs.getBlock(wood)));
OreDictionary.registerOre("fenceWood", new ItemStack(BlockBOPFence.getBlock(wood)));
OreDictionary.registerOre("fenceGateWood", new ItemStack(BlockBOPFenceGate.getBlock(wood)));
}
}
}
private static void registerCustomRecipe(IRecipe recipe, String name)
{
recipe.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name));
ForgeRegistries.RECIPES.register(recipe);
}
}