package minefantasy.mf2;
import java.io.File;
import minefantasy.mf2.api.MineFantasyAPI;
import minefantasy.mf2.api.armour.ArmourDesign;
import minefantasy.mf2.api.armour.CustomArmourEntry;
import minefantasy.mf2.block.basic.BasicMetadataBlockMF;
import minefantasy.mf2.block.itemblocks.ItemClayWall;
import minefantasy.mf2.block.list.BlockListMF;
import minefantasy.mf2.config.ConfigArmour;
import minefantasy.mf2.config.ConfigClient;
import minefantasy.mf2.config.ConfigCrafting;
import minefantasy.mf2.config.ConfigExperiment;
import minefantasy.mf2.config.ConfigFarming;
import minefantasy.mf2.config.ConfigHardcore;
import minefantasy.mf2.config.ConfigItemRegistry;
import minefantasy.mf2.config.ConfigMobs;
import minefantasy.mf2.config.ConfigStamina;
import minefantasy.mf2.config.ConfigTools;
import minefantasy.mf2.config.ConfigWeapon;
import minefantasy.mf2.config.ConfigWorldGen;
import minefantasy.mf2.item.gadget.ItemLootSack;
import minefantasy.mf2.item.list.ComponentListMF;
import minefantasy.mf2.item.list.ToolListMF;
import minefantasy.mf2.knowledge.KnowledgeListMF;
import minefantasy.mf2.material.BaseMaterialMF;
import minefantasy.mf2.material.MetalMaterial;
import minefantasy.mf2.mechanics.worldGen.WorldGenMFBase;
import minefantasy.mf2.mechanics.worldGen.WorldGenBiological;
import minefantasy.mf2.network.CommonProxyMF;
import minefantasy.mf2.network.packet.PacketHandlerMF;
import minefantasy.mf2.recipe.BasicRecipesMF;
import minefantasy.mf2.recipe.RecipeRemover;
import minefantasy.mf2.util.MFLogUtil;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.Configuration;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
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.FMLEventChannel;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
/**
* @author Anonymous Productions
*/
@Mod(modid = MineFantasyII.MODID, name = MineFantasyII.NAME, dependencies = "required-after:Forge@[7.0,);required-after:FML@[5.0.5,)", version = MineFantasyII.VERSION)
public class MineFantasyII
{
public static final String MODID = "minefantasy2";
public static final String NAME = "MineFantasyII";
public static final String VERSION = "Alpha_2.7";
public static final WorldGenMFBase worldGenManager = new WorldGenMFBase();
@SidedProxy(clientSide = "minefantasy.mf2.network.ClientProxyMF", serverSide = "minefantasy.mf2.network.CommonProxyMF")
public static CommonProxyMF proxy;
public static PacketHandlerMF packetHandler;
@Instance(MODID)
public static MineFantasyII instance;
@EventHandler
public void preInit(FMLPreInitializationEvent event)
{
NetworkRegistry.INSTANCE.registerGuiHandler(instance, proxy);
if(FMLCommonHandler.instance().getSide() == Side.CLIENT)
{
new ConfigClient().setConfig(getCfg(event, "Client"));
}
new ConfigArmour().setConfig(getCfg(event, "Armours"));
new ConfigExperiment().setConfig(getCfg(event, "Specials"));
new ConfigHardcore().setConfig(getCfg(event, "Hardcore"));
new ConfigTools().setConfig(getCfg(event, "Tools"));
new ConfigWeapon().setConfig(getCfg(event, "Weapons"));
new ConfigStamina().setConfig(getCfg(event, "Stamina_System"));
new ConfigItemRegistry().setConfig(getCfg(event, "Item_Registry"));
new ConfigFarming().setConfig(getCfg(event, "Farming"));
new ConfigWorldGen().setConfig(getCfg(event, "WorldGen"));
new ConfigCrafting().setConfig(getCfg(event, "Crafting"));
new ConfigMobs().setConfig(getCfg(event, "Mobs"));
BaseMaterialMF.init();
MineFantasyAPI.isInDebugMode = isDebug();
MFLogUtil.log("API Debug mode updated: " + MineFantasyAPI.isInDebugMode);
addModFlags();
proxy.preInit();
RecipeRemover.removeRecipes();
}
@EventHandler
public void load(FMLInitializationEvent evt)
{
ToolListMF.load();
ComponentListMF.load();
MinecraftForge.EVENT_BUS.register(this);
proxy.registerMain();
GameRegistry.registerWorldGenerator(worldGenManager, 0);
packetHandler = new PacketHandlerMF();
FMLEventChannel eventChannel;
for(String channel:packetHandler.packetList.keySet())
{
eventChannel = NetworkRegistry.INSTANCE.newEventDrivenChannel(channel);
eventChannel.register(packetHandler);
packetHandler.channels.put(channel, eventChannel);
}
}
@EventHandler
public void modsLoaded(FMLPostInitializationEvent evt)
{
CustomArmourEntry.registerItem(Items.leather_helmet, ArmourDesign.LEATHER);
CustomArmourEntry.registerItem(Items.leather_chestplate, ArmourDesign.LEATHER);
CustomArmourEntry.registerItem(Items.leather_leggings, ArmourDesign.LEATHER);
CustomArmourEntry.registerItem(Items.leather_boots, ArmourDesign.LEATHER);
CustomArmourEntry.registerItem(Items.chainmail_helmet, ArmourDesign.MAIL);
CustomArmourEntry.registerItem(Items.chainmail_chestplate, ArmourDesign.MAIL);
CustomArmourEntry.registerItem(Items.chainmail_leggings, ArmourDesign.MAIL);
CustomArmourEntry.registerItem(Items.chainmail_boots, ArmourDesign.MAIL);
CustomArmourEntry.registerItem(Items.golden_helmet, ArmourDesign.SOLID, 2.0F);
CustomArmourEntry.registerItem(Items.golden_chestplate, ArmourDesign.SOLID, 2.0F);
CustomArmourEntry.registerItem(Items.golden_leggings, ArmourDesign.SOLID, 2.0F);
CustomArmourEntry.registerItem(Items.golden_boots, ArmourDesign.SOLID, 2.0F);
ConfigItemRegistry.readCustoms();
for(BiomeGenBase biome : BiomeGenBase.getBiomeGenArray())
{
registerBiomeStuff(biome);
}
KnowledgeListMF.init();
BasicRecipesMF.init();
ItemLootSack.addItems();
proxy.postInit();
proxy.registerTickHandlers();
MetalMaterial.addHeatables();
}
private void registerBiomeStuff(BiomeGenBase biome)
{
if(WorldGenBiological.isBiomeInConstraint(biome, ConfigWorldGen.berryMinTemp, ConfigWorldGen.berryMaxTemp, ConfigWorldGen.berryMinRain, ConfigWorldGen.berryMaxRain))
{
biome.addFlower(BlockListMF.berryBush, 0, 5);
}
}
private static Configuration getCfg(FMLPreInitializationEvent event, String name)
{
return new Configuration(new File(event.getModConfigurationDirectory(), "MineFantasyII/"+name + ".cfg"));
}
private void addModFlags()
{
isBGLoaded = setIsBGLoaded();
}
public static boolean isBGLoaded()
{
return isBGLoaded;
}
public static boolean setIsBGLoaded()
{
try
{
Class.forName("mods.battlegear2.Battlegear");
//return Loader.isModLoaded("battlegear2");
}
catch (ClassNotFoundException e)
{
return false;
}
return true;
}
public static boolean isDebug()
{
return ConfigExperiment.debug.equals("AU32-Db42-Acf6-Ggh9-9E8d");
}
private static boolean isBGLoaded;
/**
* Determines if a player name is that of a MF modder
*/
public static boolean isNameModder(String name)
{
return name.equals("Galactic_Hiker") || name.equals("tim4200");
}
}