package tc.oc.pgm.kits; import org.bukkit.inventory.ItemStack; import tc.oc.commons.core.inject.HybridManifest; import tc.oc.pgm.compose.ComposableManifest; import tc.oc.pgm.features.FeatureBinder; import tc.oc.pgm.map.inject.MapScoped; import tc.oc.pgm.match.MatchPlayerFacetBinder; import tc.oc.pgm.match.inject.MatchBinders; import tc.oc.pgm.match.inject.MatchScoped; import tc.oc.pgm.xml.parser.EnumParserManifest; import tc.oc.pgm.xml.parser.ParserBinders; public class KitManifest extends HybridManifest implements ParserBinders, MatchBinders { @Override protected void configure() { // Items bind(GlobalItemParser.class); bind(ItemParser.class).in(MapScoped.class); linkOptional(ItemParser.class); bindElementParser(ItemStack.class).to(ItemParser.class); // Custom Items bind(GrenadeListener.class).in(MatchScoped.class); matchListener(GrenadeListener.class); bind(ItemSharingAndLockingListener.class).in(MatchScoped.class); matchListener(ItemSharingAndLockingListener.class); // Kits bind(KitDefinitionParser.class).in(MapScoped.class); bind(KitParser.class).in(MapScoped.class); linkOptional(KitParser.class); final FeatureBinder<Kit> kits = new FeatureBinder<>(binder(), Kit.class); kits.bindParser().to(KitParser.class); kits.bindDefinitionParser().to(KitDefinitionParser.class); kits.installRootParser(); install(new ComposableManifest<Kit>(){}); installPlayerModule(binder -> { new MatchPlayerFacetBinder(binder) .register(KitPlayerFacet.class); }); // KitRules final FeatureBinder<KitRule> kitRules = new FeatureBinder<>(binder(), KitRule.class); kitRules.installReflectiveParser(); kitRules.installRootParser(); install(new EnumParserManifest<>(KitRule.Action.class)); } }