package com.skcraft.playblock; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import com.sk89q.forge.ResponseTracker; import com.skcraft.playblock.media.MediaResolver; import com.skcraft.playblock.projector.BlockProjector; import com.skcraft.playblock.projector.ItemRemote; import com.skcraft.playblock.projector.TileEntityProjector; import com.skcraft.playblock.queue.ExposedQueue; import com.skcraft.playblock.queue.QueueManager; import com.skcraft.playblock.queue.QueueSupervisor; import com.skcraft.playblock.queue.SimpleQueueSupervisor; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerStartedEvent; import cpw.mods.fml.common.event.FMLServerStoppingEvent; import cpw.mods.fml.common.network.FMLEventChannel; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; /** * Initializes everything. */ public class SharedRuntime { private ResponseTracker tracker = new ResponseTracker(); private QueueManager queueManager; private QueueSupervisor queueSupervisor; private MediaResolver mediaResolver; private SharedConfiguration config; public static Block blockProjector = null; public static Item itemRemote = null; public static FMLEventChannel networkWrapper; /** * Get the response tracker. * * @return the tracker */ public ResponseTracker getTracker() { return tracker; } /** * Gets the configuration. * * @return the configuration */ public SharedConfiguration getConfig() { return config; } /** * Called on FML pre-initialization. * * @param event * the event */ public void preInit(FMLPreInitializationEvent event) { config = new SharedConfiguration("PlayBlock.cfg"); } /** * Called on FML initialization. * * @param event * the event */ public void load(FMLInitializationEvent event) { queueManager = new QueueManager(); mediaResolver = new MediaResolver(); queueSupervisor = new SimpleQueueSupervisor(mediaResolver); NetworkRegistry.INSTANCE.registerGuiHandler(PlayBlock.instance, new GuiHandler()); networkWrapper = NetworkRegistry.INSTANCE.newEventDrivenChannel(PlayBlock.CHANNEL_ID); networkWrapper.register(new PacketHandler()); blockProjector = new BlockProjector(); GameRegistry.registerBlock(blockProjector, BlockProjector.INTERNAL_NAME); GameRegistry.registerTileEntity(TileEntityProjector.class, TileEntityProjector.INTERNAL_NAME); itemRemote = new ItemRemote(); GameRegistry.registerItem(itemRemote, ItemRemote.INTERNAL_NAME); getConfig().save(); } /** * Called on server start. * * @param event * the event */ public void serverStarted(FMLServerStartedEvent event) { } /** * Called on server stop. * * @param event * the event */ public void serverStopping(FMLServerStoppingEvent event) { } public QueueManager getQueueManager() { return queueManager; } public MediaResolver getMediaResolver() { return mediaResolver; } public QueueSupervisor getQueueSupervisor() { return queueSupervisor; } public void setQueueSupervisor(QueueSupervisor queueSupervisor) { this.queueSupervisor = queueSupervisor; } public void showProjectorGui(EntityPlayer player, TileEntityProjector tileEntity) { // Overriden on the client } public void showRemoteGui(EntityPlayer player, ExposedQueue queuable) { // Overriden on the client } }