Newer
Older
ultramine_bukkit / src / main / java / org / ultramine / mods / bukkit / UMBukkitImplMod.java
@vlad20012 vlad20012 on 14 Mar 2017 3 KB [refactoring] moved some classes
package org.ultramine.mods.bukkit;

import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerAboutToStartEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraftforge.common.MinecraftForge;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.plugin.PluginDescriptionFile;
import org.ultramine.core.service.InjectService;
import org.ultramine.core.service.ServiceManager;
import org.ultramine.mods.bukkit.api.BukkitRegistry;
import org.ultramine.mods.bukkit.handler.ChunkPopulateHandler;
import org.ultramine.mods.bukkit.handler.CoreEventHandler;
import org.ultramine.mods.bukkit.handler.EntityEventHandler;
import org.ultramine.mods.bukkit.handler.InternalEventHandler;
import org.ultramine.mods.bukkit.handler.PlayerEventHandler;
import org.ultramine.mods.bukkit.handler.WorldEventHandler;
import org.ultramine.mods.bukkit.integration.permissions.b2c.SuperPermsReplacer;
import org.ultramine.mods.bukkit.integration.permissions.b2c.SuperPermsReplacerImpl;

@Mod(modid = "UMBukkitImpl", name = "UMBukkitImpl", version = "1.0.0", acceptableRemoteVersions = "*")
public class UMBukkitImplMod
{
	@InjectService
	private static ServiceManager services;
	@InjectService
	private static BukkitRegistry bukkitRegistry;
	private CraftServer bserver;

	@Mod.EventHandler
	public void preInit(FMLPreInitializationEvent e)
	{
		services.register(BukkitRegistry.class, new BukkitRegistryLoader(), 0);
	}

	@Mod.EventHandler
	public void init(FMLInitializationEvent e)
	{
		bukkitRegistry.injectPlugin("org.ultramine.mods.bukkit.injected.internal.",
				new PluginDescriptionFile("ultramine_core_plugin", "1.0.0", "org.ultramine.mods.bukkit.injected.internal.InjectedUltramineCorePlugin")
						.setSoftDepend("Vault")
		);
	}

	@Mod.EventHandler
	public void serverAboutToStart(FMLServerAboutToStartEvent e)
	{
		setupLoggers();
		bserver = new CraftServer(e.getServer(), e.getServer().getConfigurationManager());
		services.register(CraftPlayerCache.class, new CraftPlayerCacheImpl(bserver), 0);
		services.register(SuperPermsReplacer.class, new SuperPermsReplacerImpl(), 0);
		register(new CoreEventHandler(bserver));
		MinecraftForge.EVENT_BUS.register(new WorldEventHandler(bserver));
		MinecraftForge.EVENT_BUS.register(new EntityEventHandler(bserver));
		MinecraftForge.EVENT_BUS.register(new InternalEventHandler());
		register(new PlayerEventHandler(bserver));
		GameRegistry.registerWorldGenerator(new ChunkPopulateHandler(bserver), 0);
	}

	@Mod.EventHandler
	public void serverStarting(FMLServerStartingEvent e)
	{
		bserver.enablePlugins(org.bukkit.plugin.PluginLoadOrder.POSTWORLD);
	}

	private static void setupLoggers()
	{
		java.util.logging.Logger global = java.util.logging.Logger.getLogger("");
		global.setUseParentHandlers(false);

		for(java.util.logging.Handler handler : global.getHandlers())
		{
			global.removeHandler(handler);
		}

		global.addHandler(new org.bukkit.craftbukkit.util.ForwardLogHandler());
	}

	private static void register(Object handler)
	{
		FMLCommonHandler.instance().bus().register(handler);
		MinecraftForge.EVENT_BUS.register(handler);
	}
}