Add BOP smelting recipes

This commit is contained in:
Cheeserolls 2015-05-19 10:02:56 +01:00
parent ce01fd4019
commit be0c9c36e1
3 changed files with 127 additions and 4 deletions

View File

@ -30,7 +30,8 @@ public class BOPWoodEnums
{
return this.getName();
}
public boolean hasPlanks() {
public boolean hasPlanks()
{
switch (this) {
case GIANT_FLOWER: case DEAD:
return false;
@ -38,6 +39,15 @@ public class BOPWoodEnums
return true;
}
}
public boolean canMakeCharcoal()
{
switch (this) {
case GIANT_FLOWER:
return false;
default:
return true;
}
}
}

View File

@ -0,0 +1,79 @@
/*******************************************************************************
* Copyright 2014, 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.handler;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.IFuelHandler;
public class FurnaceFuelHandler implements IFuelHandler
{
private Map<Pair<Item, Integer>, Integer> itemMetaFuelList = new HashMap<Pair<Item, Integer>, Integer>();
private Map<Item, Integer> itemFuelList = new HashMap<Item, Integer>();
@Override
public int getBurnTime(ItemStack fuel) {
return getFuelValue(fuel);
}
// register an item with a specific meta value as a fuel
public void addFuel(Item item, int metadata, int value)
{
itemMetaFuelList.put(Pair.of(item, metadata), value);
}
// register an item as a fuel (for any meta value)
public void addFuel(Item item, int value)
{
itemFuelList.put(item, value);
}
public void addFuel(Block block, int metadata, int value)
{
addFuel(Item.getItemFromBlock(block), metadata, value);
}
public void addFuel(Block block, int value)
{
addFuel(Item.getItemFromBlock(block), value);
}
public int getFuelValue(ItemStack stack)
{
System.out.println("testing for fuel "+stack.getDisplayName());
if (stack == null) {return 0;}
Item item = stack.getItem();
if (item == null) {return 0;}
Pair<Item, Integer> pair = Pair.of(item, stack.getItemDamage());
// see if the specific item/meta combination is registered
if (itemMetaFuelList.containsKey(pair))
{
System.out.println("specific match");
return itemMetaFuelList.get(pair);
}
// see if the item in general is registered
if (itemFuelList.containsKey(item))
{
System.out.println("general match");
return itemFuelList.get(item);
}
// otherwise no value as fuel
return 0;
}
}

View File

@ -24,6 +24,7 @@ import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.block.BlockBones;
import biomesoplenty.common.block.BlockGem;
import biomesoplenty.common.block.BlockHive;
import biomesoplenty.common.handler.FurnaceFuelHandler;
import biomesoplenty.common.item.ItemDart;
import biomesoplenty.common.item.ItemJarFilled;
import net.minecraft.init.Blocks;
@ -39,6 +40,7 @@ public class ModCrafting
public static void init()
{
addCraftingRecipies();
addSmeltingRecipes();
}
@ -310,9 +312,9 @@ public class ModCrafting
GameRegistry.addShapedRecipe(new ItemStack(Items.rotten_flesh), new Object[] {"FFF", "FPF", "FFF", 'F', new ItemStack(BOPItems.fleshchunk), 'P', new ItemStack(BOPItems.jar_filled, 1, ItemJarFilled.JarContents.POISON.ordinal())});
//Bone Segments > Bonemeal
GameRegistry.addShapelessRecipe(new ItemStack(Items.dye, 3, 15), new Object[] {((BlockBones)BOPBlocks.bone_segment).getVariantItem(BlockBones.BoneType.SMALL)});
GameRegistry.addShapelessRecipe(new ItemStack(Items.dye, 6, 15), new Object[] {((BlockBones)BOPBlocks.bone_segment).getVariantItem(BlockBones.BoneType.MEDIUM)});
GameRegistry.addShapelessRecipe(new ItemStack(Items.dye, 12, 15), new Object[] {((BlockBones)BOPBlocks.bone_segment).getVariantItem(BlockBones.BoneType.LARGE)});
GameRegistry.addShapelessRecipe(new ItemStack(Items.dye, 3, EnumDyeColor.WHITE.getDyeDamage()), new Object[] {((BlockBones)BOPBlocks.bone_segment).getVariantItem(BlockBones.BoneType.SMALL)});
GameRegistry.addShapelessRecipe(new ItemStack(Items.dye, 6, EnumDyeColor.WHITE.getDyeDamage()), new Object[] {((BlockBones)BOPBlocks.bone_segment).getVariantItem(BlockBones.BoneType.MEDIUM)});
GameRegistry.addShapelessRecipe(new ItemStack(Items.dye, 12, EnumDyeColor.WHITE.getDyeDamage()), new Object[] {((BlockBones)BOPBlocks.bone_segment).getVariantItem(BlockBones.BoneType.LARGE)});
//Honeycombs
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.hive, 1, BlockHive.HiveType.HONEYCOMB.ordinal()), new Object [] {"##", "##", '#', new ItemStack(BOPItems.honeycomb)});
@ -329,4 +331,36 @@ public class ModCrafting
}
public static void addSmeltingRecipes()
{
// Register smelting recipes
GameRegistry.addSmelting(Blocks.dirt, new ItemStack(BOPBlocks.dried_dirt), 0F);
GameRegistry.addSmelting(BlockBOPPlant.getVariantItem(AllPlants.TINYCACTUS), new ItemStack(Items.dye, 1, EnumDyeColor.GREEN.getDyeDamage()), 0.2F);
GameRegistry.addSmelting(BOPItems.mudball, new ItemStack(BOPItems.mud_brick), 0F);
for (AllWoods wood : AllWoods.values())
{
if (wood.canMakeCharcoal())
{
GameRegistry.addSmelting(BlockBOPLog.getVariantItem(wood), new ItemStack(Items.coal, 1, 1), 15F);
}
}
// 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.ash, 400); // TODO: really? 400? Ash is already burnt but burns better than wooden planks?
}
}