Skip to content

Commit

Permalink
feat(game.config): methods for defining string list
Browse files Browse the repository at this point in the history
  • Loading branch information
WakelessSloth56 committed Oct 27, 2022
1 parent 2e76668 commit 38b0a3c
Showing 1 changed file with 27 additions and 0 deletions.
Expand Up @@ -2,10 +2,24 @@

import java.util.List;
import java.util.function.Consumer;
import java.util.function.Predicate;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
import net.minecraftforge.common.ForgeConfigSpec.Builder;
import net.minecraftforge.common.ForgeConfigSpec.ConfigValue;

public class ConfigUtils {

public static final Joiner LINE_JOINER = Joiner.on("\n");
public static final Joiner DOT_JOINER = Joiner.on(".");
public static final Splitter DOT_SPLITTER = Splitter.on(".");

public static List<String> split(String path) {
return Lists.newArrayList(DOT_SPLITTER.split(path));
}


public static void pushWithoutPop(Builder specBuilder, String path, Consumer<Builder> subBuilder) {
specBuilder.push(path);
subBuilder.accept(specBuilder);
Expand All @@ -18,6 +32,19 @@ public static void push(Builder specBuilder, String path, Consumer<Builder> subB
}


public static <T> ConfigValue<List<? extends T>> defineList(Builder specBuilder, String path, Predicate<Object> elementValidator) {
return specBuilder.defineListAllowEmpty(split(path), List::of, elementValidator);
}

public static ConfigValue<List<? extends String>> defineStringList(Builder specBuilder, String path) {
return defineList(specBuilder, path, (o) -> o instanceof String);
}

public static ConfigValue<List<? extends String>> defineStringList(Builder specBuilder, String path, List<String> allowedValues) {
return defineList(specBuilder, path, (o) -> o instanceof String && allowedValues.contains(o));
}


public static boolean validateListSize(Object o, int size) {
if (o instanceof List<?> l) {
return l.size() == size;
Expand Down

0 comments on commit 38b0a3c

Please sign in to comment.