Skip to content

Commit

Permalink
feat(game.data): extended GsonHelper
Browse files Browse the repository at this point in the history
  • Loading branch information
WakelessSloth56 committed Nov 26, 2022
1 parent b7c4ae4 commit 48af1db
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions src/main/java/org/auioc/mcmod/arnicalib/game/data/GsonHelper.java
@@ -0,0 +1,38 @@
package org.auioc.mcmod.arnicalib.game.data;

import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.function.Supplier;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

public class GsonHelper extends net.minecraft.util.GsonHelper {

public static <T> T[] convertToArray(JsonArray json, IntFunction<T[]> generator, Function<JsonElement, T> converter) {
final var array = generator.apply(json.size());
int i = 0;
for (var jsonElement : json) {
array[i] = converter.apply(jsonElement);
i++;
}
return array;
}

public static <T> T[] getAsArray(JsonObject json, String key, IntFunction<T[]> generator, Function<JsonElement, T> converter) {
return convertToArray(getAsJsonArray(json, key), generator, converter);
}

public static <T> T[] getAsArray(JsonObject json, String key, IntFunction<T[]> generator, Function<JsonElement, T> converter, Supplier<T[]> fallback) {
return (json.has(key)) ? getAsArray(json, key, generator, converter) : fallback.get();
}

public static <T> T[] getAsArray(JsonObject json, String key, IntFunction<T[]> generator, Function<JsonElement, T> converter, T[] fallback) {
return getAsArray(json, key, generator, converter, () -> fallback);
}

public static <T> T[] getAsArray(JsonObject json, String key, IntFunction<T[]> generator, Function<JsonElement, T> converter, boolean fallback) {
return (fallback) ? getAsArray(json, key, generator, converter, () -> generator.apply(0)) : getAsArray(json, key, generator, converter);
}

}

0 comments on commit 48af1db

Please sign in to comment.