/* * This file is part of Matter Overdrive * Copyright (c) 2015., Simeon Radivoev, All rights reserved. * * Matter Overdrive is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Matter Overdrive is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>. */ package matteroverdrive; 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.*; import cpw.mods.fml.common.network.NetworkRegistry; import matteroverdrive.commands.*; import matteroverdrive.compat.MatterOverdriveCompat; import matteroverdrive.dialog.DialogRegistry; import matteroverdrive.entity.player.AndroidPlayer; import matteroverdrive.handler.*; import matteroverdrive.handler.quest.Quests; import matteroverdrive.imc.MOIMCHandler; import matteroverdrive.init.*; import matteroverdrive.matter_network.MatterNetworkRegistry; import matteroverdrive.network.PacketPipeline; import matteroverdrive.proxy.CommonProxy; import matteroverdrive.util.*; import net.minecraft.item.ItemBlock; import net.minecraftforge.common.MinecraftForge; import java.io.File; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.VERSION, guiFactory = Reference.GUI_FACTORY_CLASS, dependencies = Reference.DEPEDNENCIES) public class MatterOverdrive { @SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.SERVER_PROXY_CLASS) public static CommonProxy proxy; public static final MatterOverdriveTab tabMatterOverdrive = new MatterOverdriveTab("tabMatterOverdrive"); public static final MatterOverdriveTab tabMatterOverdrive_modules = new MatterOverdriveTab("tabMatterOverdrive_modules"); public static final MatterOverdriveTab tabMatterOverdrive_upgrades = new MatterOverdriveTab("tabMatterOverdrive_upgrades"); public static final MatterOverdriveTab tabMatterOverdrive_food = new MatterOverdriveTab("tabMatterOverdrive_food"); public static final MatterOverdriveTab tabMatterOverdrive_ships = new MatterOverdriveTab("tabMatterOverdrive_ships"); public static final MatterOverdriveTab tabMatterOverdrive_buildings = new MatterOverdriveTab("tabMatterOverdrive_buildings"); public static final MatterOverdriveTab tabMatterOverdrive_decorative = new MatterOverdriveTab("tabMatterOverdrive_decorative"); public static TickHandler tickHandler; public static PlayerEventHandler playerEventHandler; public static ConfigurationHandler configHandler; public static GuiHandler guiHandler; public static PacketPipeline packetPipeline; public static BucketHandler bucketHandler; @Instance(Reference.MOD_ID) public static MatterOverdrive instance; public static MatterOverdriveWorld moWorld; public static EntityHandler entityHandler; public static MatterRegistry matterRegistry; public static AndroidStatRegistry statRegistry; public static DialogRegistry dialogRegistry; public static MatterRegistrationHandler matterRegistrationHandler; public static WeaponFactory weaponFactory; public static AndroidPartsFactory androidPartsFactory; public static Quests quests; public static QuestFactory questFactory; public static DialogFactory dialogFactory; public static BlockHandler blockHandler; public static final ExecutorService threadPool = Executors.newFixedThreadPool(2); public static MOLog log = new MOLog(); @EventHandler public void preInit(FMLPreInitializationEvent event) { checkJavaVersion(); matterRegistry = new MatterRegistry(); statRegistry = new AndroidStatRegistry(); dialogRegistry = new DialogRegistry(); guiHandler = new GuiHandler(); packetPipeline = new PacketPipeline(); entityHandler = new EntityHandler(); configHandler = new ConfigurationHandler(new File(event.getModConfigurationDirectory().getAbsolutePath() + File.separator + "MatterOverdrive" + File.separator + Reference.MOD_NAME + ".cfg")); playerEventHandler = new PlayerEventHandler(configHandler); bucketHandler = new BucketHandler(); matterRegistrationHandler = new MatterRegistrationHandler(event.getModConfigurationDirectory().getAbsolutePath() + File.separator + "MatterOverdrive" + File.separator + "Registry" + ".matter"); weaponFactory = new WeaponFactory(); androidPartsFactory = new AndroidPartsFactory(); quests = new Quests(); questFactory = new QuestFactory(); dialogFactory = new DialogFactory(dialogRegistry); blockHandler = new BlockHandler(); FMLCommonHandler.instance().bus().register(configHandler); tickHandler = new TickHandler(configHandler,playerEventHandler); FMLCommonHandler.instance().bus().register(tickHandler); FMLCommonHandler.instance().bus().register(playerEventHandler); MinecraftForge.EVENT_BUS.register(playerEventHandler); MinecraftForge.EVENT_BUS.register(bucketHandler); MinecraftForge.EVENT_BUS.register(blockHandler); MatterOverdriveFluids.init(event); MatterOverdriveBlocks.init(event); MatterOverdriveItems.init(event); moWorld = new MatterOverdriveWorld(configHandler); MatterOverdriveEntities.init(event, configHandler); MatterOverdriveEnchantments.init(event, configHandler); moWorld.register(); MatterNetworkRegistry.register(); packetPipeline.registerPackets(); MatterOverdriveBioticStats.init(event); matterRegistry.preInit(event,configHandler); UpdateTabs(); proxy.registerCompatModules(); MatterOverdriveCompat.preInit(event); } @EventHandler public void init(FMLInitializationEvent event) { guiHandler.register(event.getSide()); NetworkRegistry.INSTANCE.registerGuiHandler(this, guiHandler); MinecraftForge.EVENT_BUS.register(entityHandler); proxy.init(event); configHandler.init(); MatterOverdriveCompat.init(event); MatterOverdriveBlocks.register(event); MatterOverdriveItems.register(event); MatterOverdriveFluids.register(event); MatterOverdriveBioticStats.register(event); MatterOverdriveBioticStats.registerAll(configHandler, MatterOverdrive.statRegistry); MatterOverdriveQuests.init(event); MatterOverdriveQuests.register(event,quests); MatterOverdriveDialogs.init(event, configHandler, dialogRegistry); MatterOverdriveRecipes.registerBlockRecipes(event); MatterOverdriveRecipes.registerItemRecipes(event); MatterOverdriveRecipes.registerInscriberRecipes(event); weaponFactory.initModules(); weaponFactory.initWeapons(); androidPartsFactory.initParts(); AndroidPlayer.loadConfigs(configHandler); } @EventHandler public void postInit(FMLPostInitializationEvent event) { proxy.postInit(event); MatterOverdriveCompat.postInit(event); MatterOverdriveEntities.register(event); MatterOverdriveItems.addToDungons(); MatterOverdriveItems.addToMODungons(); MatterOverdriveMatter.init(configHandler); MatterOverdriveMatter.registerBlacklistFromConfig(configHandler); MatterOverdriveMatter.registerFromConfig(configHandler); MatterOverdriveMatter.registerBasic(configHandler); configHandler.postInit(); } @EventHandler public void serverStarting(FMLServerStartingEvent event) { event.registerServerCommand(new AndoidCommands()); event.registerServerCommand(new MatterRegistryCommands()); event.registerServerCommand(new QuestCommands()); event.registerServerCommand(new SaveWorldToImage()); event.registerServerCommand(new WorldGenCommands()); proxy.getGoogleAnalytics().load(); } @EventHandler public void serverStopping(FMLServerStoppingEvent event) { proxy.getGoogleAnalytics().unload(); } @EventHandler public void serverStart(FMLServerStartedEvent event) { matterRegistrationHandler.serverStart(event); tickHandler.onServerStart(event); } @EventHandler public void imcCallback(FMLInterModComms.IMCEvent event) { MOIMCHandler.imcCallback(event); } private void UpdateTabs() { tabMatterOverdrive.item = MatterOverdriveItems.matter_scanner; tabMatterOverdrive_modules.item = MatterOverdriveItems.weapon_module_color; tabMatterOverdrive_upgrades.item = MatterOverdriveItems.item_upgrade; tabMatterOverdrive_food.item = MatterOverdriveItems.earl_gray_tea; tabMatterOverdrive_ships.item = MatterOverdriveItems.colonizerShip; tabMatterOverdrive_buildings.item = MatterOverdriveItems.buildingBase; tabMatterOverdrive_decorative.item = new ItemBlock(MatterOverdriveBlocks.decorative_stripes); } private void checkJavaVersion() { String versionString = System.getProperty("java.version"); int pos = versionString.indexOf('.'); pos = versionString.indexOf('.', pos+1); double version = Double.parseDouble(versionString.substring(0, pos)); if (version < 1.8) { MatterOverdrive.log.warn("Matter Overdrive only supports Java 8 and above. Please update your Java version. You are currently using: " + version); } } }