Untitled

 avatar
unknown
plain_text
a year ago
2.1 kB
15
Indexable
package fr.lostera.eco.util.suggestion;

import fr.lostera.eco.ModernEco;
import fr.lostera.eco.module.impl.commands.CommandsModule;
import fr.lostera.eco.module.impl.core.CoreModule;
import fr.lostera.eco.module.impl.core.currency.Currency;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import studio.mevera.imperat.BukkitSource;
import studio.mevera.imperat.command.parameters.CommandParameter;
import studio.mevera.imperat.command.parameters.type.BaseParameterType;
import studio.mevera.imperat.context.ExecutionContext;
import studio.mevera.imperat.context.internal.CommandInputStream;
import studio.mevera.imperat.resolvers.SuggestionResolver;

import java.util.Locale;
import java.util.Optional;
import java.util.stream.Collectors;

public class CurrencyParameterType extends BaseParameterType<BukkitSource, Currency> {
    @Override
    public SuggestionResolver<BukkitSource> getSuggestionResolver() {
        return (context, parameter) -> {
            final CoreModule coreModule = ModernEco.getInstance().getModuleManager().getModule(CoreModule.class);

            return coreModule.getConfig().getCurrencies().values().stream().map(Currency::getName).collect(Collectors.toList());
        };
    }

    @Override
    public @Nullable Currency resolve(@NotNull final ExecutionContext<BukkitSource> context, @NotNull final CommandInputStream<BukkitSource> inputStream, @NotNull final String input) {
        final CommandsModule commandsModule = ModernEco.getInstance().getModuleManager().getModule(CommandsModule.class);

        final Optional<Currency> currency = commandsModule.getCoreModule().getConfig().findCurrencyByName(input);
        return currency.orElse(null);
    }

    @Override
    public boolean matchesInput(final String input, final CommandParameter<BukkitSource> parameter) {
        return ModernEco.getInstance().getModuleManager().getModule(CoreModule.class).getConfig().findCurrencyByName(input.toLowerCase(Locale.ROOT)).isPresent();
    }
}
Editor is loading...
Leave a Comment