ProjectAres/PGM/src/main/java/tc/oc/pgm/tracker/TrackerManifest.java

87 lines
3.8 KiB
Java

package tc.oc.pgm.tracker;
import com.google.inject.multibindings.Multibinder;
import tc.oc.commons.core.inject.HybridManifest;
import tc.oc.commons.core.inject.Manifest;
import tc.oc.pgm.match.MatchScope;
import tc.oc.pgm.match.inject.MatchBinders;
import tc.oc.pgm.match.inject.MatchScoped;
import tc.oc.pgm.tracker.resolvers.DamageResolver;
import tc.oc.pgm.tracker.resolvers.ExplosionDamageResolver;
import tc.oc.pgm.tracker.resolvers.FallingBlockDamageResolver;
import tc.oc.pgm.tracker.resolvers.GenericDamageResolver;
import tc.oc.pgm.tracker.resolvers.PotionDamageResolver;
import tc.oc.pgm.tracker.trackers.AnvilTracker;
import tc.oc.pgm.tracker.trackers.BlockTracker;
import tc.oc.pgm.tracker.trackers.CombatLogTracker;
import tc.oc.pgm.tracker.trackers.DeathTracker;
import tc.oc.pgm.tracker.trackers.DispenserTracker;
import tc.oc.pgm.tracker.trackers.EntityTracker;
import tc.oc.pgm.tracker.trackers.FallTracker;
import tc.oc.pgm.tracker.trackers.FireTracker;
import tc.oc.pgm.tracker.trackers.OwnedMobTracker;
import tc.oc.pgm.tracker.trackers.ProjectileTracker;
import tc.oc.pgm.tracker.trackers.SpleefTracker;
import tc.oc.pgm.tracker.trackers.TNTTracker;
public class TrackerManifest extends HybridManifest implements MatchBinders {
@Override
protected void configure() {
installIn(MatchScoped.class, new Manifest() {
@Override protected void configure() {
bind(MasterResolver.class);
bind(EntityTracker.class);
bind(BlockTracker.class);
bind(SpleefTracker.class);
bind(ProjectileTracker.class);
bind(FallTracker.class);
bind(FireTracker.class);
bind(DispenserTracker.class);
bind(TNTTracker.class);
bind(OwnedMobTracker.class);
bind(AnvilTracker.class);
bind(CombatLogTracker.class);
bind(DeathTracker.class);
bind(PotionDamageResolver.class);
bind(ExplosionDamageResolver.class);
bind(FallingBlockDamageResolver.class);
bind(GenericDamageResolver.class);
}
});
bind(EventResolver.class).to(MasterResolver.class);
bind(ProjectileResolver.class).to(MasterResolver.class);
bind(EntityResolver.class).to(EntityTracker.class);
bind(BlockResolver.class).to(BlockTracker.class);
bindProxy(EventResolver.class);
bindProxy(ProjectileResolver.class);
bindProxy(EntityResolver.class);
bindProxy(BlockResolver.class);
matchListener(EntityTracker.class, MatchScope.RUNNING);
matchListener(BlockTracker.class, MatchScope.RUNNING);
matchListener(SpleefTracker.class, MatchScope.RUNNING);
matchListener(ProjectileTracker.class, MatchScope.RUNNING);
matchListener(FallTracker.class, MatchScope.RUNNING);
matchListener(FireTracker.class, MatchScope.RUNNING);
matchListener(DispenserTracker.class, MatchScope.RUNNING);
matchListener(TNTTracker.class, MatchScope.RUNNING);
matchListener(OwnedMobTracker.class, MatchScope.RUNNING);
matchListener(AnvilTracker.class, MatchScope.RUNNING);
matchListener(CombatLogTracker.class, MatchScope.RUNNING);
matchListener(DeathTracker.class, MatchScope.RUNNING);
// Damage resolvers - order is important!
final Multibinder<DamageResolver> damageResolvers = inSet(DamageResolver.class);
damageResolvers.addBinding().to(FallTracker.class);
damageResolvers.addBinding().to(FireTracker.class);
damageResolvers.addBinding().to(PotionDamageResolver.class);
damageResolvers.addBinding().to(ExplosionDamageResolver.class);
damageResolvers.addBinding().to(FallingBlockDamageResolver.class);
damageResolvers.addBinding().to(GenericDamageResolver.class);
}
}