// Path: src/main/java/de/dosmike/sponge/vshop/systems/pluginfilter/PluginItemService.java
// public interface PluginItemService {
// 
// 	/**
// 	 * Register an {@link PluginItemFilter} for your plugin.
// 	 * Registering filters has to happen before VillagerShop tries to load shops. Shops
// 	 * are loaded with worlds, so the latest possible event for registering would be
// 	 * {@link GameLoadCompleteEvent}. It's recommended to register the filters directly
// 	 * within {@link ChangeServiceProviderEvent}
// 	 *
// 	 * @param pluginItemId a custom id you specify for your item. e.g.: myplugin:votekey
// 	 * @param filter       the ItemFilter handling this item
// 	 */
// 	void registerItemFilter(String pluginItemId, PluginItemFilter filter);
// 
// 	/**
// 	 * Remove an {@link PluginItemFilter} by it's id.
// 	 *
// 	 * @param pluginItemId the id of the filter to remove
// 	 */
// 	void unregisterItemFilter(String pluginItemId);
// 
// }


import de.dosmike.sponge.vshop.systems.pluginfilter.PluginItemService;
import org.spongepowered.api.GameState;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.event.game.state.GameInitializationEvent;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
package de.dosmike.sponge.vshop.integrations.crateplugins;



public interface KeysFilterProvider {

	/**
	 * Core to super optional dependency:<br>
	 * Tries to get the ClaimAccess instance from the classloader.
	 * On failure it creates a new Default provider.
	 * <br><br>
	 * Doing it this way makes this class not quite know about the dependency.
	 * And the ClassLoader will not attempt to look into the dependency unless the wrapper
	 * is constructed for the first time.
	 * <br><br>
	 * This method should only be called once in {@link GameInitializationEvent}
	 */
	static Collection<KeysFilterProvider> scan() {
		assert Sponge.getGame().getState().ordinal() >= GameState.INITIALIZATION.ordinal()
				: "Dependent services might not be registered yet!";

		Set<KeysFilterProvider> kfp = new HashSet<>();

        try {
            Class.forName("com.codehusky.huskycrates.HuskyCrates");
            kfp.add(new HuskyCrateKeys());
        } catch (Throwable dependencyError) {

        }

		return kfp;
	}

// Path: src/main/java/de/dosmike/sponge/vshop/systems/pluginfilter/PluginItemService.java
// public interface PluginItemService {
// 
// 	/**
// 	 * Register an {@link PluginItemFilter} for your plugin.
// 	 * Registering filters has to happen before VillagerShop tries to load shops. Shops
// 	 * are loaded with worlds, so the latest possible event for registering would be
// 	 * {@link GameLoadCompleteEvent}. It's recommended to register the filters directly
// 	 * within {@link ChangeServiceProviderEvent}
// 	 *
// 	 * @param pluginItemId a custom id you specify for your item. e.g.: myplugin:votekey
// 	 * @param filter       the ItemFilter handling this item
// 	 */
// 	void registerItemFilter(String pluginItemId, PluginItemFilter filter);
// 
// 	/**
// 	 * Remove an {@link PluginItemFilter} by it's id.
// 	 *
// 	 * @param pluginItemId the id of the filter to remove
// 	 */
// 	void unregisterItemFilter(String pluginItemId);
// 
// }


// Path: src/main/java/de/dosmike/sponge/vshop/integrations/crateplugins/KeysFilterProvider.java
import de.dosmike.sponge.vshop.systems.pluginfilter.PluginItemService;
import org.spongepowered.api.GameState;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.event.game.state.GameInitializationEvent;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;

package de.dosmike.sponge.vshop.integrations.crateplugins;



public interface KeysFilterProvider {

	/**
	 * Core to super optional dependency:<br>
	 * Tries to get the ClaimAccess instance from the classloader.
	 * On failure it creates a new Default provider.
	 * <br><br>
	 * Doing it this way makes this class not quite know about the dependency.
	 * And the ClassLoader will not attempt to look into the dependency unless the wrapper
	 * is constructed for the first time.
	 * <br><br>
	 * This method should only be called once in {@link GameInitializationEvent}
	 */
	static Collection<KeysFilterProvider> scan() {
		assert Sponge.getGame().getState().ordinal() >= GameState.INITIALIZATION.ordinal()
				: "Dependent services might not be registered yet!";

		Set<KeysFilterProvider> kfp = new HashSet<>();

        try {
            Class.forName("com.codehusky.huskycrates.HuskyCrates");
            kfp.add(new HuskyCrateKeys());
        } catch (Throwable dependencyError) {

        }

		return kfp;
	}

	default void updateFilters(PluginItemService pis) {