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);
}
}