ProjectAres/API/bukkit/src/main/java/tc/oc/api/bukkit/BukkitApiManifest.java

50 lines
1.8 KiB
Java
Raw Normal View History

2017-01-30 01:43:34 +01:00
package tc.oc.api.bukkit;
import java.util.Optional;
import com.google.inject.Provides;
import com.google.inject.TypeLiteral;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import tc.oc.api.bukkit.friends.OnlineFriends;
import tc.oc.api.bukkit.users.BukkitUserStore;
import tc.oc.api.bukkit.users.Users;
import tc.oc.api.ApiManifest;
import tc.oc.api.minecraft.MinecraftApiManifest;
import tc.oc.api.minecraft.users.UserStore;
import tc.oc.bukkit.logging.RavenPlugin;
import tc.oc.commons.bukkit.inject.BukkitPluginManifest;
import tc.oc.commons.core.inject.HybridManifest;
import tc.oc.commons.core.inject.Manifest;
import tc.oc.commons.core.plugin.PluginResolver;
import tc.oc.minecraft.logging.BetterRaven;
public final class BukkitApiManifest extends HybridManifest {
private static class Public extends Manifest {
@Provides
Optional<BetterRaven> betterRaven(PluginResolver<Plugin> resolver) {
return Optional.ofNullable(resolver.getPlugin(RavenPlugin.class)).map(RavenPlugin::getRaven);
}
}
@Override
protected void configure() {
install(new ApiManifest());
install(new MinecraftApiManifest());
install(new BukkitPluginManifest());
publicBinder().install(new Public());
bindAndExpose(UserStore.class).to(BukkitUserStore.class);
bindAndExpose(BukkitUserStore.class);
bindAndExpose(tc.oc.api.minecraft.users.OnlinePlayers.class).to(tc.oc.api.bukkit.users.OnlinePlayers.class);
bindAndExpose(new TypeLiteral<tc.oc.api.minecraft.users.OnlinePlayers<Player>>(){}).to(tc.oc.api.bukkit.users.OnlinePlayers.class);
bindAndExpose(tc.oc.api.bukkit.users.OnlinePlayers.class).to(BukkitUserStore.class);
bindAndExpose(OnlineFriends.class).to(BukkitUserStore.class);
requestStaticInjection(Users.class);
}
}