package tc.oc.commons.bukkit.settings; import com.google.inject.Provides; import me.anxuiz.settings.SettingCallbackManager; import me.anxuiz.settings.SettingRegistry; import me.anxuiz.settings.bukkit.PlayerSettings; import tc.oc.commons.core.inject.HybridManifest; import tc.oc.commons.core.inject.SingletonManifest; import tc.oc.commons.core.plugin.PluginFacetBinder; /** * Configures the player settings system * * Provides the following service classes: * * {@link SettingManagerProvider} Access settings for specific players * {@link SettingRegistry} Register and lookup setting definitions * {@link SettingCallbackManager} Register setting change callbacks * * Also allows settings and callbacks to be registered at configuration time * using {@link SettingBinder} and {@link SettingCallbackBinder}. */ public class SettingManifest extends HybridManifest { public static class Public extends SingletonManifest { @Override protected void configure() { new SettingBinder(binder()); new SettingCallbackBinder(binder()); } @Provides SettingRegistry settingRegistry() { return PlayerSettings.getRegistry(); } @Provides SettingCallbackManager settingCallbackManager() { return PlayerSettings.getCallbackManager(); } } @Override protected void configure() { publicBinder().install(new Public()); bind(SettingManagerProviderImpl.class); bindAndExpose(SettingManagerProvider.class).to(SettingManagerProviderImpl.class); new PluginFacetBinder(binder()).add(SettingManagerProviderImpl.class); } }