package tc.oc.commons.core; import java.nio.file.Path; import java.nio.file.Paths; import javax.inject.Named; import javax.inject.Singleton; import com.google.inject.Provides; import tc.oc.analytics.AnalyticsManifest; import tc.oc.analytics.datadog.DataDogManifest; import tc.oc.commons.core.commands.DebugCommands; import tc.oc.commons.core.inject.HybridManifest; import tc.oc.commons.core.inject.Manifest; import tc.oc.commons.core.localization.LocalizedFileManager; import tc.oc.commons.core.plugin.PluginFacetBinder; import tc.oc.commons.core.restart.RestartManager; import tc.oc.file.PathWatcherService; import tc.oc.file.PathWatcherServiceImpl; import tc.oc.minecraft.analytics.MinecraftAnalyticsManifest; import tc.oc.minecraft.server.ServerFilterManifest; import tc.oc.minecraft.suspend.SuspendableBinder; public class CommonsCoreManifest extends HybridManifest { @Override protected void configure() { publicBinder().install(new PathsManifest()); publicBinder().install(new ServerFilterManifest()); new SuspendableBinder(publicBinder()); // Just bind the Set install(new AnalyticsManifest()); install(new MinecraftAnalyticsManifest()); install(new DataDogManifest()); bindAndExpose(RestartManager.class); bindAndExpose(LocalizedFileManager.class); expose(PathWatcherService.class); bind(PathWatcherService.class) .to(PathWatcherServiceImpl.class); final PluginFacetBinder facets = new PluginFacetBinder(binder()); facets.register(DebugCommands.class); facets.register(RestartManager.class); facets.register(PathWatcherServiceImpl.class); } class PathsManifest extends Manifest { @Provides @Singleton @Named("repositories") Path repositoriesPath() { return Paths.get("/minecraft/repo"); } @Provides @Singleton @Named("translations") Path translationsPath() { return Paths.get("/minecraft/translations"); } @Provides @Singleton @Named("maps") Path mapsPath(@Named("repositories") Path repos) { return repos.resolve("maps"); } @Provides @Singleton @Named("configuration") Path configurationPath(@Named("repositories") Path repos) { return repos.resolve("Config"); } } }