summaryrefslogtreecommitdiff
path: root/dicore3/command/src/main/java/io/dico/dicore/command/parameter/type/SimpleParameterType.java
blob: 667b2c762ef247354dd3ac8167c6f7f28f6c8683 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package io.dico.dicore.command.parameter.type;

import io.dico.dicore.command.CommandException;
import io.dico.dicore.command.parameter.ArgumentBuffer;
import io.dico.dicore.command.parameter.Parameter;
import org.bukkit.command.CommandSender;

/**
 * An abstraction for parameter types that only parse a single argument
 *
 * @param <TReturn>    the parameter type
 * @param <TParamInfo> parameter info object type
 */
public abstract class SimpleParameterType<TReturn, TParamInfo> extends ParameterType<TReturn, TParamInfo> {

    public SimpleParameterType(Class<TReturn> returnType) {
        super(returnType);
    }

    public SimpleParameterType(Class<TReturn> returnType, ParameterConfig<?, TParamInfo> paramConfig) {
        super(returnType, paramConfig);
    }

    protected abstract TReturn parse(Parameter<TReturn, TParamInfo> parameter, CommandSender sender, String input) throws CommandException;

    @Override
    public TReturn parse(Parameter<TReturn, TParamInfo> parameter, CommandSender sender, ArgumentBuffer buffer) throws CommandException {
        return parse(parameter, sender, buffer.requireNext(parameter.getName()));
    }

}