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 The class implementing this builder */ public interface CategoryBuilder> { Builder setTranslationPrefix(String translationPrefix); String getTranslationPrefix(); Builder addPreset(String id, Consumer action); Builder addPreset(String id, Runnable preset); Builder addVerifier(Consumer 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 get, Consumer set); Builder value(String id, long def, double min, double max, Supplier get, Consumer set); Builder value(String id, float def, double min, double max, Supplier get, Consumer set); Builder value(String id, double def, double min, double max, Supplier get, Consumer set); Builder value(String id, String def, Supplier get, Consumer set); Builder value(String id, boolean def, Supplier get, Consumer set); Builder value(String id, String def, String[] options, Supplier get, Consumer set); > Builder value(String id, T def, Class klazz, Supplier get, Consumer set); Builder value(String id, T def, double min, double max, Type type, int width, Supplier get, Consumer set); Builder value(EntryInfo entry); String getId(); ConfigCategory build(Supplier root); @FunctionalInterface interface CategoryBuilderFunction { CategoryBuilder apply(CategoryBuilder builder); } }