package openmods; 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.event.FMLServerStartingEvent; import cpw.mods.fml.common.registry.EntityRegistry; import java.io.File; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; import openmods.block.BlockDropsStore; import openmods.config.ConfigChangeListener; import openmods.config.ConfigStorage; import openmods.config.properties.CommandConfig; import openmods.config.properties.ConfigProcessing; import openmods.entity.DelayedEntityLoadManager; import openmods.entity.EntityBlock; import openmods.fakeplayer.FakePlayerPool; import openmods.integration.Integration; import openmods.integration.modules.BuildCraftPipes; import openmods.liquids.BucketFillHandler; import openmods.network.IdSyncManager; import openmods.network.event.NetworkEventManager; import openmods.network.rpc.RpcCallDispatcher; import openmods.network.rpc.targets.EntityRpcTarget; import openmods.network.rpc.targets.SyncRpcTarget; import openmods.network.rpc.targets.TileEntityRpcTarget; import openmods.proxy.IOpenModsProxy; import openmods.reflection.TypeVariableHolderHandler; import openmods.source.ClassSourceCollector; import openmods.source.CommandSource; import openmods.sync.SyncChannelHolder; import openmods.utils.bitmap.IRpcDirectionBitMap; import openmods.utils.bitmap.IRpcIntBitMap; import openmods.world.DelayedActionTickHandler; import openmods.world.DropCapture; @Mod(modid = OpenMods.MODID, name = OpenMods.MODID, version = "$LIB-VERSION$", dependencies = "required-after:OpenModsCore", guiFactory = "openmods.GuiFactory") public class OpenMods { public static final String MODID = "OpenMods"; private static final int ENTITY_BLOCK_ID = 804; @Instance(MODID) public static OpenMods instance; @SidedProxy(clientSide = "openmods.proxy.OpenClientProxy", serverSide = "openmods.proxy.OpenServerProxy") public static IOpenModsProxy proxy; private ClassSourceCollector collector; public ClassSourceCollector getCollector() { return collector; } @EventHandler public void preInit(FMLPreInitializationEvent evt) { new TypeVariableHolderHandler().fillAllHolders(evt.getAsmData()); SyncChannelHolder.ensureLoaded(); NetworkEventManager.INSTANCE.startRegistration(); RpcCallDispatcher.INSTANCE.startRegistration() .registerInterface(IRpcDirectionBitMap.class) .registerInterface(IRpcIntBitMap.class) .registerTargetWrapper(EntityRpcTarget.class) .registerTargetWrapper(TileEntityRpcTarget.class) .registerTargetWrapper(SyncRpcTarget.SyncEntityRpcTarget.class) .registerTargetWrapper(SyncRpcTarget.SyncTileEntityRpcTarget.class); final File configFile = evt.getSuggestedConfigurationFile(); Configuration config = new Configuration(configFile); ConfigProcessing.processAnnotations(MODID, config, LibConfig.class); FMLCommonHandler.instance().bus().register(new ConfigChangeListener(MODID, config)); if (config.hasChanged()) config.save(); MinecraftForge.EVENT_BUS.register(DelayedEntityLoadManager.instance); MinecraftForge.EVENT_BUS.register(FakePlayerPool.instance); MinecraftForge.EVENT_BUS.register(DropCapture.instance); MinecraftForge.EVENT_BUS.register(BucketFillHandler.instance); MinecraftForge.EVENT_BUS.register(BlockDropsStore.instance.createForgeListener()); FMLCommonHandler.instance().bus().register(DelayedActionTickHandler.INSTANCE); FMLCommonHandler.instance().bus().register(BlockDropsStore.instance.createFmlListener()); FMLCommonHandler.instance().bus().register(ConfigStorage.instance); collector = new ClassSourceCollector(evt.getAsmData()); EntityRegistry.registerModEntity(EntityBlock.class, "Block", ENTITY_BLOCK_ID, instance, 64, 1, true); proxy.preInit(); } @EventHandler public void init(FMLInitializationEvent evt) { proxy.init(); } @EventHandler public void postInit(FMLPostInitializationEvent evt) { Integration.addModule(new BuildCraftPipes()); Integration.loadModules(); proxy.postInit(); NetworkEventManager.INSTANCE.finalizeRegistration(); RpcCallDispatcher.INSTANCE.finishRegistration(); // must be after all builders are done IdSyncManager.INSTANCE.finishLoading(); } @EventHandler public void severStart(FMLServerStartingEvent evt) { evt.registerServerCommand(new CommandConfig("om_config_s", true)); evt.registerServerCommand(new CommandSource("om_source_s", true, collector)); } }