tsughub: btw-gloryholes

ref: 2c305a89aceb99de504672b0b1dce29d47d09aa2

View raw version
package btw.community.tsughoggr.gloryholes;

import net.minecraft.src.Block;
import net.minecraft.src.Item;
import btw.AddonHandler;
import btw.BTWAddon;


import net.minecraft.src.StringTranslate;
import net.minecraft.src.ItemBlock;
import net.minecraft.src.CreativeTabs;
import net.minecraft.src.TileEntity;

import java.util.*;
import java.io.*;
import java.lang.reflect.*;

public class TSGGloryhole extends BTWAddon{
	public static TSGGloryhole instance;
	public static final String gloryholeVersion = "0.3";

	public static Block ghBlockGloryhole;
	public static Block ghBlockAutoblowpipe;

	public static Item ghItemBlowpipe;
	public static Item ghItemBlowpipeWorkable;

	private Map<String, String> confprop;


	
	public
	TSGGloryhole(){
		super();
		instance = this;
	}
	
	public static TSGGloryhole
	getInstance(){
		if(instance == null)
			instance = new TSGGloryhole();
		return instance;
	}
	private void
	registerProperty(String st, int in){
		registerProperty(st, Integer.toString(in));
	}
	private void
	normalizeProperty(String prop, int def){
		if(confprop.get(prop) == null){
			confprop.put(prop, Integer.toString(def));
		}
		try { 
			Integer.parseInt(confprop.get(prop));
		} catch (NumberFormatException e){
			confprop.put(prop, Integer.toString(def));
		}
		

	}
	private int
	getIdFromProp(String prop){
		if(confprop == null)
			throw new InvalidConfigException("Config map is null after sanitization");
		if(confprop.get(prop) == null)
			throw new InvalidConfigException("Config property: " + prop +" is called but not defined");
		return Integer.parseInt(confprop.get(prop)); /*We would actually want this to crash if it throws NFE*/
	}



	public void
	preInitialize(){
		registerProperty("ghBlockGloryhole.blockID", 1750);
		registerProperty("ghBlockAutoBlowpipe.blockID",1751);
	
		registerProperty("ghItemBlowpipe.itemID", 24020);
		registerProperty("ghItemBlowpipeWorkable.itemID", 24021);

		registerProperty("EnableBlowpipeBlock", "true");
	}
	private void
	SanitizeConfigMap(){
		if(confprop == null){
			confprop = new HashMap<String, String>();
		}
		normalizeProperty("ghBlockGloryhole.blockID", 1750);
		normalizeProperty("ghBlockAutoBlowpipe.blockID",1751);

		normalizeProperty("ghItemBlowpipe.itemID", 24020);
		normalizeProperty("ghItemBlowpipeWorkable.itemID", 24021);

	}
	public void
	initialize(){
		AddonHandler.logMessage("Gloryholes " + gloryholeVersion + " initializing");
		confprop = loadConfigProperties();
		this.SanitizeConfigMap();
		this.InitializeBlocks();
		this.InitializeItems();
		this.ReplaceBlocks();
		TSGGloryHoleRecipes.addAllRecipes();
		AddonHandler.logMessage("Gloryhole initializaiton complete");
	}
	public void
	ReplaceBlocks(){
	}
	public void
	InitializeBlocks(){
		ghBlockGloryhole = new TSGBlockGloryhole(getIdFromProp("ghBlockGloryhole.blockID")).setUnlocalizedName("ghBlockGloryhole").setCreativeTab(CreativeTabs.tabDecorations);
		ghBlockAutoblowpipe = new TSGBlockBlowingStand(getIdFromProp("ghBlockAutoBlowpipe.blockID")).setUnlocalizedName("ghAutoBlowpipe").setCreativeTab(CreativeTabs.tabDecorations);


		new ItemBlock(getIdFromProp("ghBlockGloryhole.blockID") - 256 );
		new ItemBlock(getIdFromProp("ghBlockAutoBlowpipe.blockID") - 256);
	}
	public void
	InitializeItems(){
		ghItemBlowpipe = new Item(getIdFromProp("ghItemBlowpipe.itemID")).setMaxStackSize(1).setUnlocalizedName("ghItemBlowpipe").setCreativeTab(CreativeTabs.tabMaterials);
		ghItemBlowpipeWorkable = new TSGItemBlowpipe(getIdFromProp("ghItemBlowpipeWorkable.itemID")).setUnlocalizedName("ghItemBlowpipeWorkable").setCreativeTab(CreativeTabs.tabMaterials);
	}
	public void
	InitializeTileEntities(){
		TileEntity.addMapping(TSGBlowingStand.class, "BlowingStand");
	}


}