|| --- Ambiguous Cases --- ||
Several times in this guide, you may see multiple ways of adding new content with different formats.
These formats will vary between using a simple ID or a compound (ID:META). These cases are
interchangable. For example, you may see a tag for a smelting recipe:

smelting, idToBeSmelted, resultId, amount, exp (x.x)
	OR
smelting, (idToSmelt:meta), (resultId:meta), amount, exp (x.x)

Since the tag is ambiguous, the simple and compound formats may be interchanged, like so:

smelting, idToBeSmelted, (resultId:meta), amount, exp (x.x)

This will result in a new smelting recipe where a general item can be smelted into a specific item.
A more real example would be smelting any color wood into brown dye:

smelting, 5, (351:3), 1, 30.0

That will add a recipe where any of the four logs (oak, birch, jungle, redwood) can be put into a
furnace and a brown down will always result. If instead a compound was used (5:0), then only oak
logs would work for that recipe.

WARNING: Putting a general case for an output ID will always assume the lowest metadata value. Use
your judgement when dealing with ambiguous outputs, as if there is metadata involved, it would be
wise to be specific of what you want.


|| --- Server Installation --- ||

BBMM is possible to install on a server. In order to do so, install forge as you normally would in a
server folder. Next, drag this zip into the mods folder and either:
	create a new folder titled bbmm
	OR
	run the server and the directory will be made for you

Next, simply drag any mods created through bbmm (that is, the .bbmm files that have been created)
into the bbmm folder and then run the server and it will load everything from the file.

|| --- Client Installation --- ||

BBMM is installed in mostly the same way on the client. Install forge as you would normally and then
drag the BBMM zip into the mods folder in .minecraft. Next, either:
	create a new folder titled bbmm
	OR
	run Minecraft and the directory will be made for you

|| --- Things to Know --- ||

Several times throughout this file, you will see things such as blockID and itemID. These are data
values used by Minecraft to tell the game several different things, such as what a block does when
it updates, or what an item does when you right click with it. IDs must be unique - a block's ID
can not be used by another block or item, and the same goes for items. Item IDs are shifted by 256,
meaning that when an item's ID is declared as 5000, it's ID will actually be 5256. So in this
context, if you declare an item using the item creation tag:

item, My Item, 5000, myItem

and want to use that item in a crafting recipe, you will need to use 5256 instead of 5000:

shapeless crafting, 5256-5256-5256, 1, 64

That particular shapeless recipe will create 64 stone (stone's ID is 1) blocks from three of the
item with ID 5256 (5000+256, or 'My Item').

For a full list of IDs that are already being used by Minecraft, go here and click the picture:
http://www.minecraftwiki.net/wiki/Data_values

If you find a free ID, you may use it to create a new block or item.

|| --- Installing Building Blocks Mods --- ||

Installing mods created with Building Blocks is a bit more difficult. Since rendering is done
client-side, textures will need to be installed in a different location from the .bbmm file. They
will need to be put into a folder called bbmm and armor files go into bbmm/armor, then that should
be compressed to a .zip and the zip should be added to the mods folder. The .bbmm file needs to be
added to the bbmm folder in .minecraft.

The entire BBMM style mod directory should be like this: (This setup sucks, but it's required)

.minecraft > mods > BBMM vX.Y.Z.zip > assets > bbmm > textures > items > .png files
.minecraft > mods > BBMM vX.Y.Z.zip > assets > bbmm > textures > blocks > .png files
.minecraft > mods > BBMM vX.Y.Z.zip > assets > bbmm > textures > armor > .png files
.minecraft > mods > BBMM vX.Y.Z.zip > assets > bbmm > textures > gui > .png files
.minecraft > bbmm > .bbmm files


|| --- A Guide To Making Mods --- ||


--Block Creation Tags--
Blocks! Everybody likes new blocks, and knowing that you made one and added it to your game can just
feel so rewarding.

block, Block Name, blockID, blockMaterial, hardness (x.x), resistance (x.x), light (0.0 to 1.0), texture
	accepted Block Materials: rock, cloth/wool, wood, dirt/ground, iron/metal, glass, leaves
	accepted Light Values: 0.0 to 1.0
	optional parameters: quantity dropped, id dropped
block, Block Name, blockID, blockMaterial, hardness (x.x), resistance (x.x), light (0.0 to 1.0), texture, qDrop
block, Block Name, blockID, blockMaterial, hardness (x.x), resistance (x.x), light (0.0 to 1.0), texture, qDrop, idDrop
block, Block Name, blockID, blockMaterial, hardness (x.x), resistance (x.x), light (0.0 to 1.0), texture, qDrop, (idDrop:meta)
	qDrop is ambiguous. There are two ways to set the quantity drop. To set the drop explicitly,
		give it a number. To set it randomly in a range, use #r#, where the first # is the
		minimum, and the second # is the maximum amount.

Any of those will work.


--Ore Dictionary Definition--
Did you make an ingot or ore that already exists in another mod? More importantly, do you want your
ingot or ore to be useable by that other mod? This tag will allow you to do just that!

ore dictionary, id, Name
ore dictionary, (id:meta), Name

Try to stick with the conventional names for dictionary users:
Ores are generally oreName
Ingots are usually ingotName
Gems, gemName

You can't add ore dictionary recipes. Yet. . . (seriously, someone do this so I don't have to)


--Tool Creation Tags--
Tools are an important part of many mods, and many players love new toolsets. Creating new toolsets
is simple.

tool material, Material Name, harvestLevel, maxUses, efficiency (x.x), damage, enchantability

tool, Tool Name, itemID, texture, toolType, toolMaterial
	accepted Tool Types: pickaxe, hatchet/axe, hoe, shovel/spade, sword


--Armor Creation Tags--
No good mod would be complete without at least one set of armor! What's the point of digging metal
out of the ground if you can't wear it?

armor material, Material Name, durability, helmReduct, chestReduct, legsReduct, bootsReduct, enchantability

armor, Armor Name, itemID, texture, armorType, armorMaterial, armorFile
	accepted Armor Types: helm, chest, legs, boots

NOTE: Creating armor is a bit more extensive. An armor texture must be made and put into the mod's
	assets/bbmm/textures/armor folder labelled either _1 or _2, depending on the type of armor
	Helm, chest and boots require a 1, legs use a 2. The following is an example:

armor, Yellow Chestplate, 6000, yellowChestplate, chest, Yellow, yellow
mods > mybbmm.zip > assets > bbmm > textures > armor > yellow_1.png

The mod will know automatically where to get all of the proper information to make the item render
properly when worn.


--Generic Item Creation Tags--
Almost every mod makes a new item! These tags should help you create some generic items to use in
crafting recipes for more functional content.

item, Item Name, itemID, texture

food, Item Name, itemID, texture, healthValue, saturation (x.x), canHealWolf (true or false)


--Crafting Creation Tags---
Crafting is a HUGE part of Minecraft! Whether it's turning a log into planks or creating a stat-
boosting Beacon, no mod would be complete without at least one recipe!


-Shortcut for Tools-
These tags are used to create tools using the generic vanilla recipes. It's quicker to use these
than using the more specific recipes, unless your tools are crafted in the traditional way.

crafting, Tool Name, craftMaterialId, toolType
	OR
crafting, Tool Name, (materialID:meta), toolType
	accepted Tool Types: pickaxe, hatchet/axe, hoe, shovel/spade, sword

-Completely Configurable Recipes-
These tags are used to create specific shaped recipes. Be very careful to make sure it is formatted
properly in your files!

custom crafting, recipe shape, params, idCrafted, amount

Custom Crafting Examples:
	Bread
custom crafting, 'www', w=296, 297, 1
	Bow
custom crafting, ' ws'-'w s'-' ws', w=280 s=287, 261, 1
	Blue Wool
custom crafting, 'wd', w=35 d=(351:4), (35:11), 1

As one can see, the recipe shape can vary in size and shape, just remember to chain the lines
together with hyphens! The recipe params are the values of the items. In the bread example,
where it says w=296, that means the w in the 'www' is itemID 296, which is wheat, and the output
is 1 bread (297).

-Shapeless Crafting-
Shapeless recipes are less common than shaped recipes, but sometimes you just need one!

shapeless crafting, params, result, amount

Shapeless Crafting Examples:
	Book
shapeless crafting, 334-339-339-339, 340, 1
	Red Wool
shapeless crafting, 35-(351:1), (35:14), 1


--World Generation--
BBMM includes two types of world generation; minables and structures. Minables are just ores than
can be found inside of a dimension's stone blocks. Structures are made in-game and then generated
in new worlds. They are very picky about how they will generate, so don't get discouraged if you
can't get it to work.

-Minables-

worldgen, blockID, minLevel, maxLevel, rarity, veinSize, dimension
OR
worldgen, (blockID:meta), minLevel, maxLevel, rarity, veinSize, dimension
	accepted Dimension IDs: -1 (The End - WhiteStone), 0 (Overworld - Stone), 1 (Nether - Netherrack)

-Structures-

custom gen, genID, min, max, rarity, dimension, otmFile
OR
custom gen, (genID:meta), min, max, rarity, dimension, otmFile

//Creating Custom Structure Generation//
1. Go into creative mode and build a structure, size can be up to 254x254x254
2. Open the BBMM creative tab and grab the Structure Boundary block and Structure Writer
3. Put 8 boundaries enclosing the structure in the shape of a cube
	NOTE: Blocks that are in between the boundaries are not counted, only blocks within the boundaries
	For example, if you put bounds in a 5x5x5 cube, only the 3x3x3 within the box will be counted
4. Place a data writer inside the boundaries and right click it
5. A new .otm file will be output to .minecraft/bbmm. You may rename this if you'd like
6. Use this file name (excluding the .otm extension) in the custom gen creation call
7. If any of the blocks in the structure is a chest, proceed. Otherwise, you're done!

//Chests//
In order to generate chest contents, follow these steps
1. Open the .otm file
2. After the final line of structure mapping [(data)-(data)-(data)-etc.], use the following tag
	loot, id, number, damage, min chance, max chance, weight
3. After all of the loot calls, the count of items range must be set using this
	size, min, max
4. The final line of the file should say END like it did before.
5. All chests in the structure will use the same loot parameters


--Editing Chests in the World--
You might just want to have some new incentive to go looking for chests, so why not add some new
loot into the unknown (ungenerated) world? Or maybe there is already too much?

loot add, chestName, id, min, max, weight
	OR
loot add, chestName, (id:meta), min, max, weight

loot remove, chestName, id
	OR
loot remove, chestName, (id:meta)

Any existing items/blocks can be used
Min is the minimum number, max is maximum (Example, diamond in blacksmith ranges 1 and 3)
Weight is the likeliness to be chosen (Example, diamond in blacksmith is 3)

Chestnames are:

mineshaftCorridor
pyramidDesertyChest
pyramidJungleChest
pyramidJungleDispenser
strongholdCorridor
strongholdLibrary
strongholdCrossing
villageBlacksmith
bonusChest
dungeonChest

These chestNames must be copied exactly, otherwise they will not register correctly


--Furnace Creation Tags--
Sometimes you need the furnace to work a little more in your favor, and need your new food dish to
be cooked before you get food poisoning from eating too much raw food.

-Smelting Creation Tags--
Some mods (especially those involving metal!) need to be able to get their items into a usable
state. Sometimes the best way to do that is with a furnace!

smelting, idToBeSmelted, resultId, amount, exp (x.x)
	OR
smelting, (idToSmelt:meta), (resultId:meta), amount, exp (x.x)

-Fuels-
Coal not cutting it for you? Maybe you need some special fuel to smelt entire stacks before its
flame finally flickers out.

fuel, itemID/blockID, burnTime (measured in ticks)

	burnTime conversion (use this as a reference for the burnTime math)
	1 smelt = 10 seconds
	10 seconds = 200 ticks
	coal = 8 smelts = 80 seconds = 1600 ticks, coal burnTime = 1600


[][]----------------------NEW AND AWESOME FOR BBMM 0.7.7!----------------------[][]

--Custom Furnace Creation Tags--
Even with new fuels and recipes, the furnace STILL isn't cutting it? Do you need a faster furnace?
Maybe even a SLOWER furnace to cook your food just right? Maybe you need a FREEZER even!

-Custom Furnace-
This is the epitome of awesome, some of the most epic work ever done with a mod! Next to custom
structures, this is will become one of the defining features of Building Blocks!

furnace, Furnace Name, blockID, cookTime (x.x), useUniqueRecipes, vanillaFuelCompat, sideTexture, topTexture, frontTextureIdle, fronTextureActive
	Furnace Name is the name that will show up in the inventory and the interface, and is used
		as the tag for all of this furnace's information.
	cookTime is the amount of seconds it takes for a recipe to finish (vanilla furnace is 10.0)
	useUniqueRecipes (true/false) is used to determine if this furnace has it's own recipe
		list. If true, it will not be able to use the recipes that a vanilla furnace uses
	vanillaFuelCompat (true/false) is used to determine if the furnace can use vanilla fuels.
		This doesn't mean the furnace can't have it's own unique fuels, it is just to say
		that the furnace will accept any fuel that the vanilla furnace uses along with
		any unique fuels added below

NOTE: Your GUI texture must be named furnacename.png and should be placed in:
	.minecraft/mods/BBMM vX.Y.Z.zip/assets/bbmm/textures/gui/furnacename.png

If the gui texture is not there, it will not show up when the furnace is activated!

-Fuel Creation Tags-
furnace fuel, Furnace Name, id, burnTime
OR
furnace fuel, Furnace Name, (id:meta), burnTime

	Furnace name is the tag for which furnace this fuel is used for (see above, this must be
		typed exactly the same as your custom furnace's name)
	Do not use this if you wish for your fuel to be used by the vanilla furnace, as this is
		a fuel only usable by your custom furnace

-Recipe Creation Tags-
furnace recipe, Furnace Name, inputID, outputID, amount, exp
OR
furnace recipe, Furnace Name, (inputID:meta), (outputID:meta), amount, exp

	Furnace name is the tag for which furnace this recipe is used for (see above, this must be
		typed exactly the same as your custom furnace's name)
	Do not use this if you wish for your recipe to be used by the vanilla furnace, as this is
		a recipe only usable by your custom furnace


[][]----------------------NEW AND AWESOME FOR BBMM 0.7.8!----------------------[][]

--Metadata and Multi-textured blocks--
A long awaited feature by many users, multiblocks are a two-in-one block that allows the creation
of multi-textured blocks that can be added to a single id (max of 16)

-Create a new Multiblock-
Using this tag will create a 'base' multiblock that new sub-blocks can be appended to

multiblock new, blockID, blockMaterial, hardness (x.x), resistance (x.x), light value (x.x)

-Adding Sub-blocks-
Using these tags will create new sub-blocks with the metadata value being the lowest one possible.

multiblock add, blockIDtoAddTo, Block Name
	This tag will add a block will all sides of the block textured as blockName

multiblock add, blockIDtoAddTo, Block Name, textureParams
	There are two ways to change a block's texture. textureParams can be:
		all=aTextureName - will retexture all sides of the block to this when called
		#=aTextureName - will rexture the side of the block to this texture (use 0-5)

As an example, one could add new logs like so:

multiblock new, 200, wood, 3.0, 4.0, 0.0
multiblock add, 200, Willow Log, all=willowSide 0=willowTop 1=willowTop
multiblock add, 200, Spruce Log, all=spruceSide 0=spruceTop 1=spruceTop

Remember that params are separated by spaces instead of commas


[][]----------------------NEW AND AWESOME FOR BBMM 0.8.1!----------------------[][]

--Records--
Everyone likes music, but wouldn't it be nice to add some new records to your mod? It's super easy
to set up!

record, itemID, SongName, texture

This tag will create a new record that will play the specified SongName.ogg. SongName and the .ogg
filename must match. However, the .ogg file needs to put put in the proper location, which is:
.minecraft/assets/records
NOTE: It is respectful to use the Artist of the song in the name of the .ogg and the record. If you
are adding the song "Greatest Song Ever" by John, you should do this:

.minecraft/assets/records/John - Greatest Song Ever.ogg
record, itemID, John - Greatest Song Ever, blackRecord

If the 'artist' writes hip-hop or rap music (in which case it is fine to steal credit), disregard
what you just read.

[][]----------------------NEW AND AWESOME FOR BBMM 0.8.2!----------------------[][]

--Removal--
Previously, it was possible to remove recipes, but it never really worked the way it was meant to.
Recently, a friend of mine decided he wanted the feature remove recipes AND items. I decided to
give it another go, and now the feature is implemented and should be here to stay this time!

remove, itemID

This tag removes an item from the game. Be wary, though - removing blocks that are part of world
generation will cause crashes, so make sure you do your research! I am not responsible for any
damage done from this tag, it is volatile and should be used if you are sure you know what you're
doing.

remove recipe, itemID
OR
remove recipe, (itemID:meta)

This tag will remove a crafting recipe from the recipe list so it will not be craftable. The top
one ignores metadata, so any recipe with that item ID output will be removed. The second one will
remove only the specific recipe output.

Examples:
remove recipe, 5
This will remove all 4 types of planks from being craftable

remove recipe, (5:0)
This will remove only oak planks from being craftable


--Vanilla Overrides--
-------Disabled as of Minecraft 1.6, don't bother with this-------

As of BBMM v1.7.5, vanilla item and block textures and names can be overriden using the following

bto, blockID, newTexture
bno, blockID, newName
ito, itemID, newTexture
ino, itemID, newNam
