package info.jbcs.minecraft.chisel;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.world.World;
import net.minecraftforge.common.Configuration;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.IGuiHandler;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;

@Mod(modid = "Chisel", name = "Chisel", version = "1.1.0")
@NetworkMod(clientSideRequired = true, serverSideRequired = true)
public class Chisel {
	public static ItemChisel				chisel;
	public static BlockMarble				blockMarble;
	public static BlockMarble				blockMarblePillar;
	public static BlockMarble				blockLimestone;
	public static BlockMarbleSlab			blockMarbleSlab;
	public static BlockMarbleSlab			blockLimestoneSlab;
	public static BlockMarbleSlab			blockMarblePillarSlab;
	public static BlockMarble				blockCobblestone;
	public static BlockGlassCarvable		blockGlass;
	public static BlockMarblePane			blockPaneGlass;
	public static BlockMarble				blockSandstone;
	public static BlockMarble				blockIron;
	public static BlockMarble				blockGold;
	public static BlockMarble				blockDiamond;
	public static BlockLightstoneCarvable	blockLightstone;
	public static BlockMarble				blockPlanks;
	public static BlockMarble				blockLapis;
	public static BlockMarble				blockEmerald;
	public static BlockMarble				blockNetherBrick;
	public static BlockMarble				blockNetherrack;
	public static BlockMarble				blockCobblestoneMossy;
	public static BlockMarbleStairs			blockMarbleStairs;
	public static BlockMarbleStairs			blockLimestoneStairs;
	public static BlockMarblePane			blockPaneIron;
	
	public static CreativeTabs				tabChisel;
	
	static Configuration config;

	@Instance("Chisel")
	public static Chisel instance;

	@SidedProxy(clientSide = "info.jbcs.minecraft.chisel.ClientProxy", serverSide = "info.jbcs.minecraft.chisel.Proxy")
	public static Proxy proxy;

	@PreInit
	public void preInit(FMLPreInitializationEvent event) {
		config = new Configuration(event.getSuggestedConfigurationFile());
		config.load();
		
		proxy.preInit();
 	}

	@Init
	public void init(FMLInitializationEvent event) {
		proxy.init();

		chisel = (ItemChisel) new ItemChisel(config.getItem("chisel",7811).getInt()).setCreativeTab(CreativeTabs.tabTools);
		LanguageRegistry.addName(chisel, "Chisel");

		if(config.get("general", "use custom creative tab", true, "Add a new tab in creative mode and put all blocks that work with chisel there.").getBoolean(true)){
			tabChisel = new CreativeTabs("tabChisel") {
				@Override
				public ItemStack getIconItemStack() {
					return new ItemStack(chisel, 1, 0);
				}
			};
			
			LanguageRegistry.instance().addStringLocalization("itemGroup.tabChisel", "en_US", "Chisel blocks");
		} else{
			tabChisel = CreativeTabs.tabBlock;
		}

		
		blockMarble = (BlockMarble) new BlockMarble("blockMarble",2761).setHardness(2.0F).setResistance(10F).setStepSound(Block.soundStoneFootstep);
		blockMarble.carverHelper.addVariation("Raw marble", 0, "marble");
		blockMarble.carverHelper.addVariation("Marble brick", 1, "marble/a1-stoneornamental-marblebrick");
		blockMarble.carverHelper.addVariation("Classic marble panel", 2, "marble/a1-stoneornamental-marbleclassicpanel");
		blockMarble.carverHelper.addVariation("Ornate marble panel", 3, "marble/a1-stoneornamental-marbleornate");
		blockMarble.carverHelper.addVariation("Marble panel", 4, "marble/a1-stoneornamental-marblepanel");
		blockMarble.carverHelper.addVariation("Marble block", 5, "marble/terrain-pistonback-marble");
		blockMarble.carverHelper.addVariation("Dark creeper marble", 6, "marble/terrain-pistonback-marblecreeperdark");
		blockMarble.carverHelper.addVariation("Light creeper marble", 7, "marble/terrain-pistonback-marblecreeperlight");
		blockMarble.carverHelper.addVariation("Carved marble", 8, "marble/a1-stoneornamental-marblecarved");
		blockMarble.carverHelper.addVariation("Radial carved marble", 9, "marble/a1-stoneornamental-marblecarvedradial");
		blockMarble.carverHelper.addVariation("Marble with dent", 10, "marble/terrain-pistonback-marbledent");
		blockMarble.carverHelper.addVariation("Marble with large dent", 11, "marble/terrain-pistonback-marbledent-small");
		blockMarble.carverHelper.addVariation("Marble tiles", 12, "marble/marble-bricks");
		blockMarble.carverHelper.addVariation("Arranged marble tiles", 13, "marble/marble-arranged-bricks");
		blockMarble.carverHelper.addVariation("Fancy marble tiles", 14, "marble/marble-fancy-bricks");
		blockMarble.carverHelper.addVariation("Marble blocks", 15, "marble/marble-blocks");
		blockMarble.carverHelper.register(blockMarble, "marble");

		blockMarbleSlab = (BlockMarbleSlab) new BlockMarbleSlab("blockMarbleSlab",2763, blockMarble).setHardness(2.0F).setResistance(10F);
		blockMarbleSlab.carverHelper.addVariation("Raw marble slab", 0, "marble");
		blockMarbleSlab.carverHelper.addVariation("Marble brick slab", 1, "marbleslab/a1-stoneornamental-marblebrick");
		blockMarbleSlab.carverHelper.addVariation("Classic marble panel slab", 2, "marbleslab/a1-stoneornamental-marbleclassicpanel");
		blockMarbleSlab.carverHelper.addVariation("Ornate marble panel slab", 3, "marbleslab/a1-stoneornamental-marbleornate");
		blockMarbleSlab.carverHelper.addVariation("Marble panel slab", 4, "marbleslab/a1-stoneornamental-marblepanel");
		blockMarbleSlab.carverHelper.addVariation("Marble block slab", 5, "marbleslab/terrain-pistonback-marble");
		blockMarbleSlab.carverHelper.addVariation("Dark creeper marble slab", 6, "marbleslab/terrain-pistonback-marblecreeperdark");
		blockMarbleSlab.carverHelper.addVariation("Light creeper marble slab", 7, "marbleslab/terrain-pistonback-marblecreeperlight");
		blockMarbleSlab.carverHelper.addVariation("Carved marble slab", 8, "marbleslab/a1-stoneornamental-marblecarved");
		blockMarbleSlab.carverHelper.addVariation("Radial carved marble slab", 9, "marbleslab/a1-stoneornamental-marblecarvedradial");
		blockMarbleSlab.carverHelper.addVariation("Marble slab with dent", 10, "marbleslab/terrain-pistonback-marbledent");
		blockMarbleSlab.carverHelper.addVariation("Marble slab with large dent ", 11, "marbleslab/terrain-pistonback-marbledent-small");
		blockMarbleSlab.carverHelper.addVariation("Marble tiles slab", 12, "marbleslab/marble-bricks");
		blockMarbleSlab.carverHelper.addVariation("Arranged marble tiles slab", 13, "marbleslab/marble-arranged-bricks");
		blockMarbleSlab.carverHelper.addVariation("Fancy marble tiles slab", 14, "marbleslab/marble-fancy-bricks");
		blockMarbleSlab.carverHelper.addVariation("Marble blocks slab", 15, "marbleslab/marble-blocks");
		blockMarbleSlab.carverHelper.register(blockMarbleSlab, "marbleSlab");

		blockMarblePillar = (BlockMarble) new BlockMarble("blockMarblePillar",2765).setHardness(2.0F).setResistance(10F).setStepSound(Block.soundStoneFootstep);
		blockMarblePillar.carverHelper.addVariation("Marble pillar", 0, "marblepillar/column");
		blockMarblePillar.carverHelper.addVariation("Marble pillar capstone", 1, "marblepillar/capstone");
		blockMarblePillar.carverHelper.addVariation("Marble pillar base", 2, "marblepillar/base");
		blockMarblePillar.carverHelper.addVariation("Small marble pillar", 3, "marblepillar/small");
		blockMarblePillar.carverHelper.addVariation("Carved marble pillar", 4, "marblepillar/pillar-carved");
		blockMarblePillar.carverHelper.addVariation("Ornamental marble pillar", 5, "marblepillar/a1-stoneornamental-marblegreek");
		blockMarblePillar.carverHelper.addVariation("Greek marble pillar", 6, "marblepillar/a1-stonepillar-greek");
		blockMarblePillar.carverHelper.addVariation("Plain marble pillar", 7, "marblepillar/a1-stonepillar-plain");
		blockMarblePillar.carverHelper.addVariation("Greek marble pillar capstone", 8, "marblepillar/a1-stonepillar-greektopplain");
		blockMarblePillar.carverHelper.addVariation("Plain marble pillar capstone", 9, "marblepillar/a1-stonepillar-plaintopplain");
		blockMarblePillar.carverHelper.addVariation("Greek marble pillar base", 10, "marblepillar/a1-stonepillar-greekbottomplain");
		blockMarblePillar.carverHelper.addVariation("Plain marble pillar base", 11, "marblepillar/a1-stonepillar-plainbottomplain");
		blockMarblePillar.carverHelper.addVariation("Greek marble pillar ornate capstone", 12, "marblepillar/a1-stonepillar-greektopgreek");
		blockMarblePillar.carverHelper.addVariation("Plain marble pillar ornate capstone", 13, "marblepillar/a1-stonepillar-plaintopgreek");
		blockMarblePillar.carverHelper.addVariation("Greek marble pillar ornate base", 14, "marblepillar/a1-stonepillar-greekbottomgreek");
		blockMarblePillar.carverHelper.addVariation("Plain marble pillar ornate base", 15, "marblepillar/a1-stonepillar-plainbottomgreek");
		blockMarblePillar.carverHelper.register(blockMarblePillar, "marblePillar");

		blockMarblePillarSlab = (BlockMarbleSlab) new BlockMarbleSlab("blockMarblePillarSlab",2766,blockMarblePillar).setHardness(2.0F).setResistance(10F).setStepSound(Block.soundStoneFootstep);
		blockMarblePillarSlab.carverHelper.addVariation("Marble pillar slab", 0, "marblepillarslab/column");
		blockMarblePillarSlab.carverHelper.addVariation("Marble pillar capstone slab", 1, "marblepillarslab/capstone");
		blockMarblePillarSlab.carverHelper.addVariation("Marble pillar base slab", 2, "marblepillarslab/base");
		blockMarblePillarSlab.carverHelper.addVariation("Small marble pillar slab", 3, "marblepillarslab/small");
		blockMarblePillarSlab.carverHelper.addVariation("Carved marble pillar slab", 4, "marblepillarslab/pillar-carved");
		blockMarblePillarSlab.carverHelper.addVariation("Ornamental marble pillar slab", 5, "marblepillarslab/a1-stoneornamental-marblegreek");
		blockMarblePillarSlab.carverHelper.addVariation("Greek marble pillar slab", 6, "marblepillarslab/a1-stonepillar-greek");
		blockMarblePillarSlab.carverHelper.addVariation("Plain marble pillar slab", 7, "marblepillarslab/a1-stonepillar-plain");
		blockMarblePillarSlab.carverHelper.addVariation("Greek marble pillar capstone slab", 8, "marblepillarslab/a1-stonepillar-greektopplain");
		blockMarblePillarSlab.carverHelper.addVariation("Plain marble pillar capstone slab", 9, "marblepillarslab/a1-stonepillar-plaintopplain");
		blockMarblePillarSlab.carverHelper.addVariation("Greek marble pillar base slab", 10, "marblepillarslab/a1-stonepillar-greekbottomplain");
		blockMarblePillarSlab.carverHelper.addVariation("Plain marble pillar base slab", 11, "marblepillarslab/a1-stonepillar-plainbottomplain");
		blockMarblePillarSlab.carverHelper.addVariation("Greek marble pillar ornate capstone slab", 12, "marblepillarslab/a1-stonepillar-greektopgreek");
		blockMarblePillarSlab.carverHelper.addVariation("Plain marble pillar ornate capstone slab", 13, "marblepillarslab/a1-stonepillar-plaintopgreek");
		blockMarblePillarSlab.carverHelper.addVariation("Greek marble pillar ornate base slab", 14, "marblepillarslab/a1-stonepillar-greekbottomgreek");
		blockMarblePillarSlab.carverHelper.addVariation("Plain marble pillar ornate base slab", 15, "marblepillarslab/a1-stonepillar-plainbottomgreek");
		blockMarblePillarSlab.carverHelper.register(blockMarblePillarSlab, "marblePillarSlab");

		blockMarbleStairs = new BlockMarbleStairs("blockMarbleStairs",2767, blockMarble);
		blockMarbleStairs.carverHelper.addVariation("Raw marble stairs", 0, "marble");
		blockMarbleStairs.carverHelper.addVariation("Marble brick stairs", 1, "marbleslab/a1-stoneornamental-marblebrick");
		blockMarbleStairs.carverHelper.addVariation("Classic marble panel stairs", 2, "marbleslab/a1-stoneornamental-marbleclassicpanel");
		blockMarbleStairs.carverHelper.addVariation("Ornate marble panel stairs", 3, "marbleslab/a1-stoneornamental-marbleornate");
		blockMarbleStairs.carverHelper.addVariation("Marble panel stairs", 4, "marbleslab/a1-stoneornamental-marblepanel");
		blockMarbleStairs.carverHelper.addVariation("Marble block stairs", 5, "marbleslab/terrain-pistonback-marble");
		blockMarbleStairs.carverHelper.addVariation("Dark creeper marble stairs", 6, "marbleslab/terrain-pistonback-marblecreeperdark");
		blockMarbleStairs.carverHelper.addVariation("Light creeper marble stairs", 7, "marbleslab/terrain-pistonback-marblecreeperlight");
		blockMarbleStairs.carverHelper.addVariation("Carved marble stairs", 8, "marbleslab/a1-stoneornamental-marblecarved");
		blockMarbleStairs.carverHelper.addVariation("Radial carved marble stairs", 9, "marbleslab/a1-stoneornamental-marblecarvedradial");
		blockMarbleStairs.carverHelper.addVariation("Marble stairs with dent", 10, "marbleslab/terrain-pistonback-marbledent");
		blockMarbleStairs.carverHelper.addVariation("Marble stairs with large dent ", 11, "marbleslab/terrain-pistonback-marbledent-small");
		blockMarbleStairs.carverHelper.addVariation("Marble tiles stairs", 12, "marbleslab/marble-bricks");
		blockMarbleStairs.carverHelper.addVariation("Arranged marble tiles stairs", 13, "marbleslab/marble-arranged-bricks");
		blockMarbleStairs.carverHelper.addVariation("Fancy marble tiles stairs", 14, "marbleslab/marble-fancy-bricks");
		blockMarbleStairs.carverHelper.addVariation("Marble blocks stairs", 15, "marbleslab/marble-blocks");
		blockMarbleStairs.carverHelper.register(blockMarbleStairs, "marbleStairs");

		blockLimestone = (BlockMarble) new BlockMarble("blockLimestone",2762).setHardness(2.0F).setResistance(10F).setStepSound(Block.soundStoneFootstep);
		blockLimestone.carverHelper.addVariation("Limestone", 0, "limestone");
		blockLimestone.carverHelper.addVariation("Small limestone tiles", 1, "limestone/terrain-cobbsmalltilelight");
		blockLimestone.carverHelper.addVariation("French limestone tiles", 2, "limestone/terrain-cob-frenchlight");
		blockLimestone.carverHelper.addVariation("French limestone tiles", 3, "limestone/terrain-cob-french2light");
		blockLimestone.carverHelper.addVariation("Creeper limestone tiles", 4, "limestone/terrain-cobmoss-creepdungeonlight");
		blockLimestone.carverHelper.addVariation("Small limestone bricks", 5, "limestone/terrain-cob-smallbricklight");
		blockLimestone.carverHelper.addVariation("Damaged limestone tiles", 6, "limestone/terrain-mossysmalltilelight");
		blockLimestone.carverHelper.addVariation("Smooth limestone", 7, "limestone/terrain-pistonback-dungeon");
		blockLimestone.carverHelper.addVariation("Limestone with ornate panel", 8, "limestone/terrain-pistonback-dungeonornate");
		blockLimestone.carverHelper.addVariation("Limestone with ornate panel", 9, "limestone/terrain-pistonback-dungeonvent");
		blockLimestone.carverHelper.addVariation("Limestone with creeper panel", 10, "limestone/terrain-pistonback-lightcreeper");
		blockLimestone.carverHelper.addVariation("Limestone with dent", 11, "limestone/terrain-pistonback-lightdent");
		blockLimestone.carverHelper.addVariation("Limestone with panel", 12, "limestone/terrain-pistonback-lightemboss");
		blockLimestone.carverHelper.addVariation("Large limestone tiles", 13, "limestone/terrain-pistonback-lightfour");
		blockLimestone.carverHelper.addVariation("Limestone with light panel", 14, "limestone/terrain-pistonback-lightmarker");
		blockLimestone.carverHelper.addVariation("Limestone with dark panel", 15, "limestone/terrain-pistonback-lightpanel");
		blockLimestone.carverHelper.register(blockLimestone, "limestone");

		blockLimestoneSlab = (BlockMarbleSlab) new BlockMarbleSlab("blockLimestoneSlab",2764, blockLimestone).setHardness(2.0F).setResistance(10F);
		blockLimestoneSlab.carverHelper.addVariation("Limestone slab", 0, "limestone");
		blockLimestoneSlab.carverHelper.addVariation("Small limestone tiles slab", 1, "limestone/terrain-cobbsmalltilelight");
		blockLimestoneSlab.carverHelper.addVariation("French limestone tiles slab", 2, "limestone/terrain-cob-frenchlight");
		blockLimestoneSlab.carverHelper.addVariation("French limestone tiles slab", 3, "limestone/terrain-cob-french2light");
		blockLimestoneSlab.carverHelper.addVariation("Creeper limestone tiles slab", 4, "limestone/terrain-cobmoss-creepdungeonlight");
		blockLimestoneSlab.carverHelper.addVariation("Small limestone bricks slab", 5, "limestone/terrain-cob-smallbricklight");
		blockLimestoneSlab.carverHelper.addVariation("Damaged limestone tiles slab", 6, "limestone/terrain-mossysmalltilelight");
		blockLimestoneSlab.carverHelper.addVariation("Smooth limestone slab", 7, "limestone/terrain-pistonback-dungeon");
		blockLimestoneSlab.carverHelper.addVariation("Limestone slab with ornate panel", 8, "limestone/terrain-pistonback-dungeonornate");
		blockLimestoneSlab.carverHelper.addVariation("Limestone slab with ornate panel", 9, "limestone/terrain-pistonback-dungeonvent");
		blockLimestoneSlab.carverHelper.addVariation("Limestone slab with creeper panel", 10, "limestone/terrain-pistonback-lightcreeper");
		blockLimestoneSlab.carverHelper.addVariation("Limestone slab with dent", 11, "limestone/terrain-pistonback-lightdent");
		blockLimestoneSlab.carverHelper.addVariation("Limestone slab with panel", 12, "limestone/terrain-pistonback-lightemboss");
		blockLimestoneSlab.carverHelper.addVariation("Large limestone tiles slab", 13, "limestone/terrain-pistonback-lightfour");
		blockLimestoneSlab.carverHelper.addVariation("Limestone slab with light panel", 14, "limestone/terrain-pistonback-lightmarker");
		blockLimestoneSlab.carverHelper.addVariation("Limestone slab with dark panel", 15, "limestone/terrain-pistonback-lightpanel");
		blockLimestoneSlab.carverHelper.register(blockLimestoneSlab, "limestoneSlab");

		blockLimestoneStairs = new BlockMarbleStairs("blockLimestoneStairs",2771, blockLimestone);
		blockLimestoneStairs.carverHelper.addVariation("Limestone stairs", 0, "limestone");
		blockLimestoneStairs.carverHelper.addVariation("Small limestone tiles stairs", 1, "limestone/terrain-cobbsmalltilelight");
		blockLimestoneStairs.carverHelper.addVariation("French limestone tiles stairs", 2, "limestone/terrain-cob-frenchlight");
		blockLimestoneStairs.carverHelper.addVariation("French limestone tiles stairs", 3, "limestone/terrain-cob-french2light");
		blockLimestoneStairs.carverHelper.addVariation("Creeper limestone tiles stairs", 4, "limestone/terrain-cobmoss-creepdungeonlight");
		blockLimestoneStairs.carverHelper.addVariation("Small limestone bricks stairs", 5, "limestone/terrain-cob-smallbricklight");
		blockLimestoneStairs.carverHelper.addVariation("Damaged limestone tiles stairs", 6, "limestone/terrain-mossysmalltilelight");
		blockLimestoneStairs.carverHelper.addVariation("Smooth limestone stairs", 7, "limestone/terrain-pistonback-dungeon");
		blockLimestoneStairs.carverHelper.addVariation("Limestone stairs with ornate panel", 8, "limestone/terrain-pistonback-dungeonornate");
		blockLimestoneStairs.carverHelper.addVariation("Limestone stairs with ornate panel", 9, "limestone/terrain-pistonback-dungeonvent");
		blockLimestoneStairs.carverHelper.addVariation("Limestone stairs with creeper panel", 10, "limestone/terrain-pistonback-lightcreeper");
		blockLimestoneStairs.carverHelper.addVariation("Limestone stairs with dent", 11, "limestone/terrain-pistonback-lightdent");
		blockLimestoneStairs.carverHelper.addVariation("Limestone stairs with panel", 12, "limestone/terrain-pistonback-lightemboss");
		blockLimestoneStairs.carverHelper.addVariation("Large limestone tiles stairs", 13, "limestone/terrain-pistonback-lightfour");
		blockLimestoneStairs.carverHelper.addVariation("Limestone stairs with light panel", 14, "limestone/terrain-pistonback-lightmarker");
		blockLimestoneStairs.carverHelper.addVariation("Limestone stairs with dark panel", 15, "limestone/terrain-pistonback-lightpanel");
		blockLimestoneStairs.carverHelper.register(blockLimestoneStairs, "limestoneStairs");

		Block.blocksList[Block.cobblestone.blockID]=null;
		blockCobblestone = (BlockMarble) new BlockMarble(Block.cobblestone.blockID).setHardness(2.0F).setResistance(10F).setStepSound(Block.soundStoneFootstep);
		blockCobblestone.carverHelper.addVariation("Cobblestone", 0, Block.cobblestone);
		blockCobblestone.carverHelper.addVariation("Aligned cobblestone bricks", 1, "cobblestone/terrain-cobb-brickaligned");
		blockCobblestone.carverHelper.addVariation("Detailed cobblestone bricks", 2, "cobblestone/terrain-cob-detailedbrick");
		blockCobblestone.carverHelper.addVariation("Small cobblestone bricks", 3, "cobblestone/terrain-cob-smallbrick");
		blockCobblestone.carverHelper.addVariation("Large cobblestone tiles", 4, "cobblestone/terrain-cobblargetiledark");
		blockCobblestone.carverHelper.addVariation("Small cobblestone tiles", 5, "cobblestone/terrain-cobbsmalltile");
		blockCobblestone.carverHelper.addVariation("French cobblestone tiles", 6, "cobblestone/terrain-cob-french");
		blockCobblestone.carverHelper.addVariation("French cobblestone tiles", 7, "cobblestone/terrain-cob-french2");
		blockCobblestone.carverHelper.addVariation("Creeper cobblestone tiles", 8, "cobblestone/terrain-cobmoss-creepdungeon");
		blockCobblestone.carverHelper.addVariation("Damaged cobblestone tiles", 9, "cobblestone/terrain-mossysmalltiledark");
		blockCobblestone.carverHelper.addVariation("Huge cobblestone tiles", 10, "cobblestone/terrain-pistonback-dungeontile");
		blockCobblestone.carverHelper.addVariation("Cobblestone with creeper panel", 11, "cobblestone/terrain-pistonback-darkcreeper");
		blockCobblestone.carverHelper.addVariation("Cobblestone with dent", 12, "cobblestone/terrain-pistonback-darkdent");
		blockCobblestone.carverHelper.addVariation("Cobblestone with panel", 13, "cobblestone/terrain-pistonback-darkemboss");
		blockCobblestone.carverHelper.addVariation("Cobblestone with light panel", 14, "cobblestone/terrain-pistonback-darkmarker");
		blockCobblestone.carverHelper.addVariation("Cobblestone with dark panel", 15, "cobblestone/terrain-pistonback-darkpanel");
		blockCobblestone.carverHelper.register(blockCobblestone, "cobblestone");

		Block.blocksList[Block.glass.blockID]=null;
		blockGlass = (BlockGlassCarvable) new BlockGlassCarvable(Block.glass.blockID).setHardness(0.3F).setStepSound(Block.soundGlassFootstep);
		blockGlass.carverHelper.addVariation("Glass", 0, Block.glass);
		blockGlass.carverHelper.addVariation("Bubble glass", 1, "glass/terrain-glassbubble");
		blockGlass.carverHelper.addVariation("Chinese glass", 2, "glass/terrain-glass-chinese");
		blockGlass.carverHelper.addVariation("Japanese(?) glass", 3, "glass/japanese");
		blockGlass.carverHelper.addVariation("Dungeon glass", 4, "glass/terrain-glassdungeon");
		blockGlass.carverHelper.addVariation("Light glass", 5, "glass/terrain-glasslight");
		blockGlass.carverHelper.addVariation("Borderless glass", 6, "glass/terrain-glassnoborder");
		blockGlass.carverHelper.addVariation("Ornate steel glass", 7, "glass/terrain-glass-ornatesteel");
		blockGlass.carverHelper.addVariation("Screen", 8, "glass/terrain-glass-screen");
		blockGlass.carverHelper.addVariation("Shale glass", 9, "glass/terrain-glassshale");
		blockGlass.carverHelper.addVariation("Steel frame glass", 10, "glass/terrain-glass-steelframe");
		blockGlass.carverHelper.addVariation("Stone frame glass", 11, "glass/terrain-glassstone");
		blockGlass.carverHelper.addVariation("Streak glass", 12, "glass/terrain-glassstreak");
		blockGlass.carverHelper.addVariation("Thick grid glass", 13, "glass/terrain-glass-thickgrid");
		blockGlass.carverHelper.addVariation("Thin grid glass", 14, "glass/terrain-glass-thingrid");
		blockGlass.carverHelper.addVariation("Modern Iron Fence", 15, "glass/a1-glasswindow-ironfencemodern");
		blockGlass.carverHelper.register(blockGlass, "glass");
	
		
		Block.blocksList[Block.sandStone.blockID]=null;
		blockSandstone = (BlockMarble) new BlockMarble(Block.sandStone.blockID).setStepSound(Block.soundStoneFootstep).setHardness(0.8F);
		blockSandstone.carverHelper.addVariation("Sandstone", 0, Block.sandStone);
		blockSandstone.carverHelper.addVariation("Cobble sandstone", 1, "sandstone/terrain-sandstone-cobble");
		blockSandstone.carverHelper.addVariation("Full cobble sandstone", 2, "sandstone/terrain-sandstone-solidcobble");
		blockSandstone.carverHelper.addVariation("Smooth sandstone", 3, "sandstone/terrain-sandstone-naturalsmooth");
		blockSandstone.carverHelper.addVariation("Sandstone bricks", 4, "sandstone/terrain-sandstone-brickflat");
		blockSandstone.carverHelper.addVariation("Sandstone column", 5, "sandstone/terrain-sandstone-column");
		blockSandstone.carverHelper.addVariation("Sandstone flat column", 6, "sandstone/terrain-sandstone-columnflat");
		blockSandstone.carverHelper.addVariation("Sandstone scribbles", 7, "sandstone/terrain-sandstone-glyph");
		blockSandstone.carverHelper.addVariation("Smooth sandstone scribbles", 8, "sandstone/terrain-sandstone-smoothglyph");
		blockSandstone.carverHelper.addVariation("Faded Sandstone", 9, "sandstone/terrain-sandstone-faded");
		blockSandstone.carverHelper.addVariation("Sandstone creeper", 10, "sandstone/a0-sandstonepreview-boxcreeper");
		blockSandstone.carverHelper.addVariation("Concrete", 11, "sandstone/a0-sandstonepreview-concrete");
		blockSandstone.carverHelper.addVariation("Concrete block", 12, "sandstone/a0-sandstonepreview-concreteblock");
		blockSandstone.carverHelper.addVariation("Concrete sidewalk", 13, "sandstone/a0-sandstonepreview-concretesidewalk");
		blockSandstone.carverHelper.addVariation("Concrete weathered", 14, "sandstone/a0-sandstonepreview-concreteweathered");
		blockSandstone.carverHelper.addVariation("Sandstone smooth and flat", 15, "sandstone/a0-sandstonepreview-smoothflat");
		blockSandstone.carverHelper.register(blockSandstone, "sandstone");

		Block.blocksList[Block.blockSteel.blockID]=null;
		blockIron = (BlockMarble) new BlockMarble(Block.blockSteel.blockID).setHardness(5F).setResistance(10F).setStepSound(Block.soundMetalFootstep);
		blockIron.carverHelper.addVariation("Iron block", 0, Block.blockSteel);
		blockIron.carverHelper.addVariation("Large iron ingots", 1, "iron/terrain-iron-largeingot");
		blockIron.carverHelper.addVariation("Small iron ingots", 2, "iron/terrain-iron-smallingot");
		blockIron.carverHelper.addVariation("Iron gears", 3, "iron/terrain-iron-gears");
		blockIron.carverHelper.addVariation("Iron bricks", 4, "iron/terrain-iron-brick");
		blockIron.carverHelper.addVariation("Iron plates", 5, "iron/terrain-iron-plates");
		blockIron.carverHelper.addVariation("Iron plates with rivets", 6, "iron/terrain-iron-rivets");
		blockIron.carverHelper.addVariation("Iron coin stack heads up", 7, "iron/terrain-iron-coin-heads");
		blockIron.carverHelper.addVariation("Iron coin stack heads down", 8, "iron/terrain-iron-coin-tails");
		blockIron.carverHelper.addVariation("Dark iron crate", 9, "iron/terrain-iron-crate-dark");
		blockIron.carverHelper.addVariation("Light iron crate", 10, "iron/terrain-iron-crate-light");
		blockIron.carverHelper.addVariation("Iron block with moon decoration", 11, "iron/terrain-iron-moon");
		blockIron.carverHelper.addVariation("Iron moon in purple obsidian", 12, "iron/terrain-iron-space");
		blockIron.carverHelper.addVariation("Iron moon in obsidian", 13, "iron/terrain-iron-spaceblack");
		blockIron.carverHelper.addVariation("Iron vents", 14, "iron/terrain-iron-vents");
		blockIron.carverHelper.addVariation("Iron block simple", 15, "iron/terrain-iron-simple");
		blockIron.carverHelper.register(blockIron, "iron");

		Block.blocksList[Block.blockGold.blockID]=null;
		blockGold = (BlockMarble) new BlockMarble(Block.blockGold.blockID).setHardness(3F).setResistance(10F).setStepSound(Block.soundMetalFootstep);
		blockGold.carverHelper.addVariation("Gold block", 0, Block.blockGold);
		blockGold.carverHelper.addVariation("Large golden ingots", 1, "gold/terrain-gold-largeingot");
		blockGold.carverHelper.addVariation("Small golden ingots", 2, "gold/terrain-gold-smallingot");
		blockGold.carverHelper.addVariation("Golden bricks", 3, "gold/terrain-gold-brick");
		blockGold.carverHelper.addVariation("Gold cart", 4, "gold/terrain-gold-cart");
		blockGold.carverHelper.addVariation("Golden coin stack heads up", 5, "gold/terrain-gold-coin-heads");
		blockGold.carverHelper.addVariation("Golden coin stack heads down", 6, "gold/terrain-gold-coin-tails");
		blockGold.carverHelper.addVariation("Dark gold crate", 7, "gold/terrain-gold-crate-dark");
		blockGold.carverHelper.addVariation("Light gold crate", 8, "gold/terrain-gold-crate-light");
		blockGold.carverHelper.addVariation("Golden plates", 9, "gold/terrain-gold-plates");
		blockGold.carverHelper.addVariation("Iron plates with rivets", 10, "gold/terrain-gold-rivets");
		blockGold.carverHelper.addVariation("Gold block with star decoration", 11, "gold/terrain-gold-star");
		blockGold.carverHelper.addVariation("Golden star in purple obsidian", 12, "gold/terrain-gold-space");
		blockGold.carverHelper.addVariation("Golden star in obsidian", 13, "gold/terrain-gold-spaceblack");
		blockGold.carverHelper.addVariation("Gold block simple", 14, "gold/terrain-gold-simple");
		blockGold.carverHelper.register(blockGold, "gold");

		Block.blocksList[Block.blockDiamond.blockID]=null;
		blockDiamond = (BlockMarble) new BlockMarble(Block.blockDiamond.blockID).setHardness(5F).setResistance(10F).setStepSound(Block.soundMetalFootstep);
		blockDiamond.carverHelper.addVariation("Diamond block", 0, Block.blockDiamond);
		blockDiamond.carverHelper.addVariation("Embossed diamond block", 1, "diamond/terrain-diamond-embossed");
		blockDiamond.carverHelper.addVariation("Diamond block with panel", 2, "diamond/terrain-diamond-gem");
		blockDiamond.carverHelper.addVariation("Diamond cells", 3, "diamond/terrain-diamond-cells");
		blockDiamond.carverHelper.addVariation("Diamonds in purple obsidian", 4, "diamond/terrain-diamond-space");
		blockDiamond.carverHelper.addVariation("Diamonds in obsidian", 5, "diamond/terrain-diamond-spaceblack");
		blockDiamond.carverHelper.addVariation("Diamond block simple", 6, "diamond/terrain-diamond-simple");
		blockDiamond.carverHelper.addVariation("Bismuth", 7, "diamond/a1-blockdiamond-bismuth");
		blockDiamond.carverHelper.addVariation("Crushed diamond", 8, "diamond/a1-blockdiamond-crushed");
		blockDiamond.carverHelper.addVariation("Small diamond blocks", 9, "diamond/a1-blockdiamond-four");
		blockDiamond.carverHelper.addVariation("Small ornate diamond blocks", 10, "diamond/a1-blockdiamond-fourornate");
		blockDiamond.carverHelper.addVariation("Zelda diamond block", 11, "diamond/a1-blockdiamond-zelda");
		blockDiamond.carverHelper.addVariation("Diamond block with ornate layer", 12, "diamond/a1-blockdiamond-ornatelayer");

		blockDiamond.carverHelper.register(blockDiamond, "diamond");

		Block.blocksList[Block.glowStone.blockID]=null;
		blockLightstone = (BlockLightstoneCarvable) new BlockLightstoneCarvable(Block.glowStone.blockID).setHardness(0.3F).setLightValue(1.0F).setStepSound(Block.soundGlassFootstep);
		blockLightstone.carverHelper.addVariation("Glowstone", 0, Block.glowStone);
		blockLightstone.carverHelper.addVariation("Cobble glowstone block", 1, "lightstone/terrain-sulphur-cobble");
		blockLightstone.carverHelper.addVariation("Corroded glowstone blocks", 2, "lightstone/terrain-sulphur-corroded");
		blockLightstone.carverHelper.addVariation("Glowstone blocks with glass", 3, "lightstone/terrain-sulphur-glass");
		blockLightstone.carverHelper.addVariation("Neon glowstone", 4, "lightstone/terrain-sulphur-neon");
		blockLightstone.carverHelper.addVariation("Ornate glowstone blocks", 5, "lightstone/terrain-sulphur-ornate");
		blockLightstone.carverHelper.addVariation("Rocky glowstone", 6, "lightstone/terrain-sulphur-rocky");
		blockLightstone.carverHelper.addVariation("Shale-shaped glowstone", 7, "lightstone/terrain-sulphur-shale");
		blockLightstone.carverHelper.addVariation("Glowstone tiles", 8, "lightstone/terrain-sulphur-tile");
		blockLightstone.carverHelper.addVariation("Fancy glowstone latern", 9, "lightstone/terrain-sulphur-weavelanternlight");
		blockLightstone.carverHelper.addVariation("Crumbling glowstone block", 10, "lightstone/a1-glowstone-cobble");
		blockLightstone.carverHelper.addVariation("Organic glowstone growth block", 11, "lightstone/a1-glowstone-growth");
		blockLightstone.carverHelper.addVariation("Glowstone layers", 12, "lightstone/a1-glowstone-layers");
		blockLightstone.carverHelper.addVariation("Corroded glowstone tiles", 13, "lightstone/a1-glowstone-tilecorroded");
		blockLightstone.carverHelper.addVariation("Glowstone bismuth", 14, "lightstone/glowstone-bismuth");
		blockLightstone.carverHelper.addVariation("Glowstone bismuth panel", 15, "lightstone/glowstone-bismuth-panel");
		blockLightstone.carverHelper.register(blockLightstone, "lightstone");

		Block.blocksList[Block.blockLapis.blockID]=null;
		blockLapis = (BlockMarble) new BlockMarble(Block.blockLapis.blockID).setHardness(3F).setResistance(5F).setStepSound(Block.soundStoneFootstep);
		blockLapis.carverHelper.addVariation("Lapis block", 0, Block.blockLapis);
		blockLapis.carverHelper.addVariation("Chunky lapis block", 1, "lapis/terrain-lapisblock-chunky");
		blockLapis.carverHelper.addVariation("Dark lapis block", 2, "lapis/terrain-lapisblock-panel");
		blockLapis.carverHelper.addVariation("Zelda lapis block", 3, "lapis/terrain-lapisblock-zelda");
		blockLapis.carverHelper.addVariation("Ornate lapis block", 4, "lapis/terrain-lapisornate");
		blockLapis.carverHelper.addVariation("Lapis tile", 5, "lapis/terrain-lapistile");
		blockLapis.carverHelper.addVariation("Lapis panel", 6, "lapis/a1-blocklapis-panel");
		blockLapis.carverHelper.addVariation("Smooth lapis", 7, "lapis/a1-blocklapis-smooth");
		blockLapis.carverHelper.addVariation("Lapis with ornate layer", 8, "lapis/a1-blocklapis-ornatelayer");
		blockLapis.carverHelper.register(blockLapis, "lapis");

		Block.blocksList[Block.blockEmerald.blockID]=null;
		blockEmerald = (BlockMarble) new BlockMarble(Block.blockEmerald.blockID).setHardness(5.0F).setResistance(10.0F).setStepSound(Block.soundMetalFootstep);
		blockEmerald.carverHelper.addVariation("Emerald block", 0, Block.blockEmerald);
		blockEmerald.carverHelper.addVariation("Emerald panel", 1, "emerald/a1-blockemerald-emeraldpanel");
		blockEmerald.carverHelper.addVariation("Classic emerald panel", 2, "emerald/a1-blockemerald-emeraldpanelclassic");
		blockEmerald.carverHelper.addVariation("Smooth emerald", 3, "emerald/a1-blockemerald-emeraldsmooth");
		blockEmerald.carverHelper.addVariation("Emerald chunk", 4, "emerald/a1-blockemerald-emeraldchunk");
		blockEmerald.carverHelper.addVariation("Emerald with ornate layer", 5, "emerald/a1-blockemerald-emeraldornatelayer");
		blockEmerald.carverHelper.addVariation("Zelda emerald block", 6, "emerald/a1-blockemerald-emeraldzelda");
		blockEmerald.carverHelper.addVariation("Emerald cell", 7, "emerald/a1-blockquartz-cell");
		blockEmerald.carverHelper.addVariation("Emerald bismuth", 8, "emerald/a1-blockquartz-cellbismuth");
		blockEmerald.carverHelper.addVariation("Small emerald blocks", 9, "emerald/a1-blockquartz-four");
		blockEmerald.carverHelper.addVariation("Small ornate emerald blocks", 10, "emerald/a1-blockquartz-fourornate");
		blockEmerald.carverHelper.addVariation("Ornate emerald block", 11, "emerald/a1-blockquartz-ornate");
		blockEmerald.carverHelper.register(blockEmerald, "emerald");

		Block.blocksList[Block.netherBrick.blockID]=null;
		blockNetherBrick = (BlockMarble) new BlockMarble(Block.netherBrick.blockID).setHardness(2.0F).setResistance(10.0F).setStepSound(Block.soundStoneFootstep);
		blockNetherBrick.carverHelper.addVariation("Nether brick", 0, Block.netherBrick);
		blockNetherBrick.carverHelper.addVariation("Blue nether brick", 1, "netherbrick/a1-netherbrick-brinstar");
		blockNetherBrick.carverHelper.addVariation("Spattered nether brick", 2, "netherbrick/a1-netherbrick-classicspatter");
		blockNetherBrick.carverHelper.addVariation("Nether brick made of guts", 3, "netherbrick/a1-netherbrick-guts");
		blockNetherBrick.carverHelper.addVariation("Dark nether brick made of guts", 4, "netherbrick/a1-netherbrick-gutsdark");
		blockNetherBrick.carverHelper.addVariation("Small nether brick made of guts", 5, "netherbrick/a1-netherbrick-gutssmall");
		blockNetherBrick.carverHelper.addVariation("Blue nether brick with lava", 6, "netherbrick/a1-netherbrick-lavabrinstar");
		blockNetherBrick.carverHelper.addVariation("Brown nether brick", 7, "netherbrick/a1-netherbrick-lavabrown");
		blockNetherBrick.carverHelper.addVariation("Obsidian nether brick", 8, "netherbrick/a1-netherbrick-lavaobsidian");
		blockNetherBrick.carverHelper.addVariation("Stone nether brick", 9, "netherbrick/a1-netherbrick-lavastonedark");
		blockNetherBrick.carverHelper.addVariation("Nether brick made of meat", 10, "netherbrick/a1-netherbrick-meat");
		blockNetherBrick.carverHelper.addVariation("Red nether brick made of meat", 11, "netherbrick/a1-netherbrick-meatred");
		blockNetherBrick.carverHelper.addVariation("Small nether brick made of meat", 12, "netherbrick/a1-netherbrick-meatredsmall");
		blockNetherBrick.carverHelper.addVariation("Small red nether brick made of meat", 13, "netherbrick/a1-netherbrick-meatsmall");
		blockNetherBrick.carverHelper.addVariation("Red nether brick", 14, "netherbrick/a1-netherbrick-red");
		blockNetherBrick.carverHelper.addVariation("Small red nether brick", 15, "netherbrick/a1-netherbrick-redsmall");
		blockNetherBrick.carverHelper.register(blockNetherBrick, "netherBrick");

		Block.blocksList[Block.netherrack.blockID]=null;
		blockNetherrack = (BlockMarble) new BlockMarble(Block.netherrack.blockID).setHardness(0.4F).setStepSound(Block.soundStoneFootstep);
		blockNetherrack.carverHelper.addVariation("Netherrack", 0, Block.netherrack);
		blockNetherrack.carverHelper.addVariation("Nethegravel with blood", 1, "netherrack/a1-netherrack-bloodgravel");
		blockNetherrack.carverHelper.addVariation("Netherrack with blood", 2, "netherrack/a1-netherrack-bloodrock");
		blockNetherrack.carverHelper.addVariation("Darker netherrack with blood", 3, "netherrack/a1-netherrack-bloodrockgrey");
		blockNetherrack.carverHelper.addVariation("Blue netherrack", 4, "netherrack/a1-netherrack-brinstar");
		blockNetherrack.carverHelper.addVariation("Shale blue netherrack", 5, "netherrack/a1-netherrack-brinstarshale");
		blockNetherrack.carverHelper.addVariation("Classic netherrack", 6, "netherrack/a1-netherrack-classic");
		blockNetherrack.carverHelper.addVariation("Spattered netherrack", 7, "netherrack/a1-netherrack-classicspatter");
		blockNetherrack.carverHelper.addVariation("Netherrack made of guts", 8, "netherrack/a1-netherrack-guts");
		blockNetherrack.carverHelper.addVariation("Dark netherrack made of guts", 9, "netherrack/a1-netherrack-gutsdark");
		blockNetherrack.carverHelper.addVariation("Netherrack made of meat", 10, "netherrack/a1-netherrack-meat");
		blockNetherrack.carverHelper.addVariation("Red netherrack made of meat", 11, "netherrack/a1-netherrack-meatred");
		blockNetherrack.carverHelper.addVariation("Netherrack made of smaller meat chunks", 12, "netherrack/a1-netherrack-meatrock");
		blockNetherrack.carverHelper.addVariation("Dark red netherrack", 13, "netherrack/a1-netherrack-red");
		blockNetherrack.carverHelper.addVariation("Netherrack with lava flowing", 14, "netherrack/a1-netherrack-wells");
		blockNetherrack.carverHelper.register(blockNetherrack, "hellrock");

		Block.blocksList[Block.cobblestoneMossy.blockID]=null;
		blockCobblestoneMossy = (BlockMarble) new BlockMarble(Block.cobblestoneMossy.blockID).setHardness(2.0F).setResistance(10.0F).setStepSound(Block.soundStoneFootstep);
		blockCobblestoneMossy.carverHelper.addVariation("Mossy cobblestone", 0, Block.cobblestoneMossy);
		blockCobblestoneMossy.carverHelper.addVariation("Aligned mossy cobblestone bricks", 1, "cobblestonemossy/terrain-cobb-brickaligned");
		blockCobblestoneMossy.carverHelper.addVariation("Detailed mossy cobblestone bricks", 2, "cobblestonemossy/terrain-cob-detailedbrick");
		blockCobblestoneMossy.carverHelper.addVariation("Small mossy cobblestone bricks", 3, "cobblestonemossy/terrain-cob-smallbrick");
		blockCobblestoneMossy.carverHelper.addVariation("Large mossy cobblestone tiles", 4, "cobblestonemossy/terrain-cobblargetiledark");
		blockCobblestoneMossy.carverHelper.addVariation("Small mossy cobblestone tiles", 5, "cobblestonemossy/terrain-cobbsmalltile");
		blockCobblestoneMossy.carverHelper.addVariation("French mossy cobblestone tiles", 6, "cobblestonemossy/terrain-cob-french");
		blockCobblestoneMossy.carverHelper.addVariation("French mossy cobblestone tiles", 7, "cobblestonemossy/terrain-cob-french2");
		blockCobblestoneMossy.carverHelper.addVariation("Creeper mossy cobblestone tiles", 8, "cobblestonemossy/terrain-cobmoss-creepdungeon");
		blockCobblestoneMossy.carverHelper.addVariation("Damaged mossy cobblestone tiles", 9, "cobblestonemossy/terrain-mossysmalltiledark");
		blockCobblestoneMossy.carverHelper.addVariation("Huge mossy cobblestone tiles", 10, "cobblestonemossy/terrain-pistonback-dungeontile");
		blockCobblestoneMossy.carverHelper.addVariation("Mossy cobblestone with creeper panel", 11, "cobblestonemossy/terrain-pistonback-darkcreeper");
		blockCobblestoneMossy.carverHelper.addVariation("Mossy cobblestone with dent", 12, "cobblestonemossy/terrain-pistonback-darkdent");
		blockCobblestoneMossy.carverHelper.addVariation("Mossy cobblestone with panel", 13, "cobblestonemossy/terrain-pistonback-darkemboss");
		blockCobblestoneMossy.carverHelper.addVariation("Mossy cobblestone with light panel", 14, "cobblestonemossy/terrain-pistonback-darkmarker");
		blockCobblestoneMossy.carverHelper.addVariation("Mossy cobblestone with dark panel", 15, "cobblestonemossy/terrain-pistonback-darkpanel");
		blockCobblestoneMossy.carverHelper.register(blockCobblestoneMossy, "stoneMoss");

		if(config.get("general", "Add panes", true, "Changes pane rendering algorithm a bit.").getBoolean(true)){
			Block.blocksList[Block.fenceIron.blockID] = null;
			blockPaneIron = (BlockMarblePane) new BlockMarblePane(Block.fenceIron.blockID, Material.iron, true).setHardness(0.3F).setStepSound(Block.soundMetalFootstep);
			blockPaneIron.carverHelper.addVariation("Iron bars", 0, Block.fenceIron);
			blockPaneIron.carverHelper.addVariation("Iron bars without frame", 1, "ironpane/fenceIron");
			blockPaneIron.carverHelper.addVariation("Menacing iron bars", 2, "ironpane/barbedwire");
			blockPaneIron.carverHelper.addVariation("Iron cage bars", 3, "ironpane/cage");
			blockPaneIron.carverHelper.addVariation("Menacing iron spikes", 4, "ironpane/fenceIronTop");
			blockPaneIron.carverHelper.addVariation("Thick iron grid", 5, "ironpane/terrain-glass-thickgrid");
			blockPaneIron.carverHelper.addVariation("Thin iron grid", 6, "ironpane/terrain-glass-thingrid");
			blockPaneIron.carverHelper.addVariation("Ornate iron pane fence", 7, "ironpane/terrain-glass-ornatesteel");
			blockPaneIron.carverHelper.addVariation("Vertical iron bars", 8, "ironpane/bars");
			blockPaneIron.carverHelper.addVariation("Iron spikes", 9, "ironpane/spikes");
			blockPaneIron.carverHelper.register(blockPaneIron, "fenceIron");

			Block.blocksList[Block.thinGlass.blockID] = null;
			blockPaneGlass = (BlockMarblePane) new BlockMarblePane(Block.thinGlass.blockID, Material.glass, false).setHardness(0.3F).setStepSound(Block.soundGlassFootstep);
			blockPaneGlass.carverHelper.addVariation("Glass pane", 0, Block.thinGlass);
			blockPaneGlass.carverHelper.addVariation("Bubble glass pane", 1, "glasspane/terrain-glassbubble");
			blockPaneGlass.carverHelper.addVariation("Borderless glass pane", 2, "glasspane/terrain-glassnoborder");
			blockPaneGlass.carverHelper.addVariation("Screen pane", 3, "glasspane/terrain-glass-screen");
			blockPaneGlass.carverHelper.addVariation("Streak glass pane", 4, "glasspane/terrain-glassstreak");
			blockPaneGlass.carverHelper.addVariation("Chinese glass pane", 12, "glasspane/chinese");
			blockPaneGlass.carverHelper.addVariation("Chinese glass pane with golden frame", 13, "glasspane/chinese2");
			blockPaneGlass.carverHelper.addVariation("Japanese glass pane", 14, "glasspane/japanese");
			blockPaneGlass.carverHelper.addVariation("Ornate japanese glass pane", 15, "glasspane/japanese2");
			blockPaneGlass.carverHelper.register(blockPaneGlass, "thinGlass");
		}
		
		for(int meta=0;meta<16;meta++){
			CraftingManager.getInstance().addRecipe(new ItemStack(blockMarbleSlab, 6, 0), new Object[] { "***", '*', new ItemStack(blockMarble, 1, meta)});
			CraftingManager.getInstance().addRecipe(new ItemStack(blockLimestoneSlab, 6, 0), new Object[] {"***", '*', new ItemStack(blockLimestone, 1, meta)});
			CraftingManager.getInstance().addRecipe(new ItemStack(blockMarblePillarSlab, 6, 0), new Object[] {"***", '*', new ItemStack(blockMarblePillar, 1, meta)});

			CraftingManager.getInstance().addRecipe(new ItemStack(blockMarbleStairs, 4, 0), new Object[] { "*  ", "** ", "***", '*', new ItemStack(blockMarble, 1, meta)});
			CraftingManager.getInstance().addRecipe(new ItemStack(blockLimestoneStairs, 4, 0), new Object[] { "*  ", "** ", "***", '*', new ItemStack(blockLimestone, 1, meta)});

			CraftingManager.getInstance().addRecipe(new ItemStack(blockMarblePillar, 6), new Object[] { "XX", "XX", "XX", 'X', new ItemStack(blockMarble, 1, meta), });
			CraftingManager.getInstance().addRecipe(new ItemStack(blockMarble, 4), new Object[] { "XX", "XX", 'X', new ItemStack(blockMarblePillar, 1, meta), });
		}

		if(config.get("general", "Alternative recipe", false, "Use alternative crafting recipe for the chisel").getBoolean(false)){
			CraftingManager.getInstance().addRecipe(new ItemStack(chisel, 1), new Object[] { " YY", " YY", "X  ", 'X', Item.stick, 'Y', Item.ingotIron });
		} else{
			CraftingManager.getInstance().addRecipe(new ItemStack(chisel, 1), new Object[] { " Y", "X ", 'X', Item.stick, 'Y', Item.ingotIron });
		}

		NetworkRegistry.instance().registerGuiHandler(this, new IGuiHandler(){
			@Override
			public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
				return new ContainerChisel(player.inventory, new InventoryChiselSelection(null));
			}

			@Override
			public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
				return new GuiChisel(player.inventory, new InventoryChiselSelection(null));
			}
		});

		
        GameRegistry.registerWorldGenerator(new MarbleWorldGenerator(blockMarble.blockID, 32, config.get("general", "Worldgen marble amount", 50, "Amount of marble to generate in the wotld; use 0 for none").getInt(50)));
        GameRegistry.registerWorldGenerator(new MarbleWorldGenerator(blockLimestone.blockID, 32, config.get("general", "Worldgen limestone amount", 50, "Amount of limestone to generate in the wotld; use 0 for none").getInt(50)));
        
        config.save();
	}

	@PostInit
	public void postInit(FMLPostInitializationEvent event) {
	}
}