43 lines
2.1 KiB
Java
43 lines
2.1 KiB
Java
package io.gitlab.jfronny.libjf.config.api.v1.dsl;
|
|
|
|
import io.gitlab.jfronny.libjf.config.api.v1.*;
|
|
import io.gitlab.jfronny.libjf.config.api.v1.type.Type;
|
|
|
|
import java.util.function.Consumer;
|
|
import java.util.function.Supplier;
|
|
|
|
/**
|
|
* An interface obtained through DSL or ConfigBuilder.category(), used for building config categories
|
|
* @param <Builder> The class implementing this builder
|
|
*/
|
|
public interface CategoryBuilder<Builder extends CategoryBuilder<Builder>> {
|
|
Builder setTranslationPrefix(String translationPrefix);
|
|
String getTranslationPrefix();
|
|
Builder addPreset(String id, Consumer<ConfigCategory> action);
|
|
Builder addPreset(String id, Runnable preset);
|
|
Builder addVerifier(Consumer<ConfigCategory> verifier);
|
|
Builder addVerifier(Runnable verifier);
|
|
Builder referenceConfig(String id);
|
|
Builder referenceConfig(ConfigInstance config);
|
|
Builder category(String id, CategoryBuilderFunction builder);
|
|
Builder value(String id, int def, double min, double max, Supplier<Integer> get, Consumer<Integer> set);
|
|
Builder value(String id, long def, double min, double max, Supplier<Long> get, Consumer<Long> set);
|
|
Builder value(String id, float def, double min, double max, Supplier<Float> get, Consumer<Float> set);
|
|
Builder value(String id, double def, double min, double max, Supplier<Double> get, Consumer<Double> set);
|
|
Builder value(String id, String def, Supplier<String> get, Consumer<String> set);
|
|
Builder value(String id, boolean def, Supplier<Boolean> get, Consumer<Boolean> set);
|
|
Builder value(String id, String def, String[] options, Supplier<String> get, Consumer<String> set);
|
|
<T extends Enum<T>> Builder value(String id, T def, Class<T> klazz, Supplier<T> get, Consumer<T> set);
|
|
<T> Builder value(String id, T def, double min, double max, Type type, int width, Supplier<T> get, Consumer<T> set);
|
|
<T> Builder value(EntryInfo<T> entry);
|
|
|
|
String getId();
|
|
|
|
ConfigCategory build(Supplier<ConfigInstance> root);
|
|
|
|
@FunctionalInterface
|
|
interface CategoryBuilderFunction {
|
|
CategoryBuilder<?> apply(CategoryBuilder<?> builder);
|
|
}
|
|
}
|