Update LibJF, use @SerializedName
This commit is contained in:
parent
998056636c
commit
fdcc989566
@ -28,6 +28,7 @@ dependencies {
|
||||
include modImplementation("io.gitlab.jfronny.libjf:libjf-data-manipulation-v0:${project.jfapi_version}")
|
||||
include("io.gitlab.jfronny.libjf:libjf-unsafe-v0:${project.jfapi_version}")
|
||||
include("io.gitlab.jfronny.libjf:libjf-base:${project.jfapi_version}")
|
||||
include modRuntimeOnly('io.gitlab.jfronny:gson:2.9.0.2022.4.2.19.45.43') // Dependency of LibJF 2.7.0
|
||||
modRuntimeOnly("io.gitlab.jfronny.libjf:libjf-devutil-v0:${project.jfapi_version}")
|
||||
|
||||
testImplementation('org.junit.jupiter:junit-jupiter:5.8.2')
|
||||
|
@ -5,7 +5,7 @@ loader_version=0.13.3
|
||||
maven_group=io.gitlab.jfronny
|
||||
archives_base_name=respackopts
|
||||
fabric_version=0.47.8+1.18.2
|
||||
jfapi_version=2.5.0
|
||||
jfapi_version=2.7.0
|
||||
|
||||
modrinth_id=TiF5QWZY
|
||||
modrinth_required_dependencies=P7dR8mSH
|
||||
|
@ -12,8 +12,6 @@ import io.gitlab.jfronny.respackopts.gson.entry.EnumEntrySerializer;
|
||||
import io.gitlab.jfronny.respackopts.gson.entry.NumericEntrySerializer;
|
||||
import io.gitlab.jfronny.respackopts.integration.FrexCompat;
|
||||
import io.gitlab.jfronny.respackopts.model.ConfigFile;
|
||||
import io.gitlab.jfronny.respackopts.model.DirRpo;
|
||||
import io.gitlab.jfronny.respackopts.model.FileRpo;
|
||||
import io.gitlab.jfronny.respackopts.model.condition.Condition;
|
||||
import io.gitlab.jfronny.respackopts.model.tree.ConfigBooleanEntry;
|
||||
import io.gitlab.jfronny.respackopts.model.tree.ConfigBranch;
|
||||
@ -72,8 +70,6 @@ public class Respackopts implements ClientModInitializer {
|
||||
.registerTypeAdapter(ConfigBooleanEntry.class, new BooleanEntrySerializer())
|
||||
.registerTypeAdapter(ConfigBranch.class, new ConfigBranchSerializer())
|
||||
.registerTypeAdapter(Script.class, new ScriptDeserializer())
|
||||
.registerTypeAdapter(FileRpo.class, new FileRpoDeserializer())
|
||||
.registerTypeAdapter(DirRpo.class, new DirRpoDeserializer())
|
||||
.registerTypeAdapter(Condition.class, new ConditionDeserializer())
|
||||
.registerTypeAdapterFactory(new SingleEntrySetTypeAdapterFactory())
|
||||
.registerTypeAdapterFactory(new SingleEntryListTypeAdapterFactory())
|
||||
|
@ -87,10 +87,10 @@ public class DirFilterEventImpl {
|
||||
}
|
||||
|
||||
private static boolean dirHidden(DirRpo rpo, String packId, String file) {
|
||||
if (rpo.conditions == null)
|
||||
if (rpo.condition == null)
|
||||
return false;
|
||||
try {
|
||||
return !rpo.conditions.evaluate(packId);
|
||||
return !rpo.condition.evaluate(packId);
|
||||
} catch (RpoFormatException e) {
|
||||
Respackopts.LOGGER.error("Couldn't parse dir conditions for " + file + " (" + packId + ")", e);
|
||||
}
|
||||
|
@ -8,10 +8,10 @@ import net.minecraft.resource.ResourcePack;
|
||||
public class FileExclusionProvider {
|
||||
public static boolean fileHidden(ResourcePack pack, String file) {
|
||||
return FileRpoSearchProvider.modifyWithRpo(file, pack, rpo -> {
|
||||
if (rpo.conditions == null)
|
||||
if (rpo.condition == null)
|
||||
return false;
|
||||
try {
|
||||
return !rpo.conditions.evaluate(MetaCache.getId(MetaCache.getKeyByPack(pack)));
|
||||
return !rpo.condition.evaluate(MetaCache.getId(MetaCache.getKeyByPack(pack)));
|
||||
} catch (RpoFormatException e) {
|
||||
Respackopts.LOGGER.error("Could not evaluate condition " + file, e);
|
||||
return false;
|
||||
|
@ -1,32 +0,0 @@
|
||||
package io.gitlab.jfronny.respackopts.gson;
|
||||
|
||||
import com.google.gson.*;
|
||||
import io.gitlab.jfronny.respackopts.Respackopts;
|
||||
import io.gitlab.jfronny.respackopts.model.DirRpo;
|
||||
import io.gitlab.jfronny.respackopts.model.condition.Condition;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
|
||||
public class DirRpoDeserializer implements JsonDeserializer<DirRpo> {
|
||||
@Override
|
||||
public DirRpo deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
if (!json.isJsonObject())
|
||||
throw new JsonParseException("Rpo must be a json object");
|
||||
DirRpo rpo = new DirRpo();
|
||||
for (Map.Entry<String, JsonElement> entry : json.getAsJsonObject().entrySet()) {
|
||||
switch (entry.getKey()) {
|
||||
case "conditions", "condition" -> rpo.conditions = context.deserialize(entry.getValue(), Condition.class);
|
||||
case "fallbacks", "fallback" -> {
|
||||
if (entry.getValue().isJsonPrimitive() && entry.getValue().getAsJsonPrimitive().isString()) {
|
||||
rpo.fallback = entry.getValue().getAsString();
|
||||
}
|
||||
else {
|
||||
throw new JsonParseException("Directory .rpos only support a single fallback");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return rpo;
|
||||
}
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
package io.gitlab.jfronny.respackopts.gson;
|
||||
|
||||
import com.google.gson.*;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import io.gitlab.jfronny.respackopts.Respackopts;
|
||||
import io.gitlab.jfronny.respackopts.model.FileRpo;
|
||||
import io.gitlab.jfronny.respackopts.model.condition.Condition;
|
||||
import meteordevelopment.starscript.Script;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class FileRpoDeserializer implements JsonDeserializer<FileRpo> {
|
||||
private static final Type stringScriptMapType = new TypeToken<Map<String, Script>>(){}.getType();
|
||||
private static final Type stringSetType = new TypeToken<Set<String>>(){}.getType();
|
||||
@Override
|
||||
public FileRpo deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
if (!json.isJsonObject())
|
||||
throw new JsonParseException("Rpo must be a json object");
|
||||
FileRpo rpo = new FileRpo();
|
||||
for (Map.Entry<String, JsonElement> entry : json.getAsJsonObject().entrySet()) {
|
||||
switch (entry.getKey()) {
|
||||
case "conditions", "condition" -> rpo.conditions = context.deserialize(entry.getValue(), Condition.class);
|
||||
case "fallbacks", "fallback" -> rpo.fallbacks = context.deserialize(entry.getValue(), stringSetType);
|
||||
case "expansions", "expansion" -> rpo.expansions = context.deserialize(entry.getValue(), stringScriptMapType);
|
||||
}
|
||||
}
|
||||
return rpo;
|
||||
}
|
||||
}
|
@ -1,10 +1,13 @@
|
||||
package io.gitlab.jfronny.respackopts.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import io.gitlab.jfronny.libjf.gson.GsonHidden;
|
||||
import io.gitlab.jfronny.respackopts.model.condition.Condition;
|
||||
|
||||
public class DirRpo {
|
||||
public Condition conditions;
|
||||
@SerializedName(value = "condition", alternate = {"conditions"})
|
||||
public Condition condition;
|
||||
@SerializedName(value = "fallback", alternate = {"fallbacks"})
|
||||
public String fallback;
|
||||
|
||||
@GsonHidden
|
||||
|
@ -1,5 +1,6 @@
|
||||
package io.gitlab.jfronny.respackopts.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import io.gitlab.jfronny.libjf.gson.GsonHidden;
|
||||
import io.gitlab.jfronny.respackopts.model.condition.Condition;
|
||||
import meteordevelopment.starscript.Script;
|
||||
@ -8,8 +9,11 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class FileRpo {
|
||||
public Condition conditions;
|
||||
@SerializedName(value = "condition", alternate = {"conditions"})
|
||||
public Condition condition;
|
||||
@SerializedName(value = "fallback", alternate = {"fallbacks"})
|
||||
public Set<String> fallbacks;
|
||||
@SerializedName(value = "expansion", alternate = {"expansions"})
|
||||
public Map<String, Script> expansions;
|
||||
|
||||
@GsonHidden
|
||||
|
@ -6,14 +6,12 @@ import io.gitlab.jfronny.respackopts.model.cache.CacheKey;
|
||||
import io.gitlab.jfronny.respackopts.model.cache.CachedPackState;
|
||||
import io.gitlab.jfronny.respackopts.util.MetaCache;
|
||||
import io.gitlab.jfronny.respackopts.model.ThrowingBiConsumer;
|
||||
import io.gitlab.jfronny.respackopts.model.tree.ConfigBranch;
|
||||
import io.gitlab.jfronny.respackopts.util.RpoFormatException;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.fabricmc.loader.api.ModContainer;
|
||||
import net.fabricmc.loader.api.VersionParsingException;
|
||||
import net.fabricmc.loader.api.metadata.version.VersionPredicate;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
@ -7,8 +7,6 @@ import io.gitlab.jfronny.respackopts.gson.entry.BooleanEntrySerializer;
|
||||
import io.gitlab.jfronny.respackopts.gson.entry.ConfigBranchSerializer;
|
||||
import io.gitlab.jfronny.respackopts.gson.entry.EnumEntrySerializer;
|
||||
import io.gitlab.jfronny.respackopts.gson.entry.NumericEntrySerializer;
|
||||
import io.gitlab.jfronny.respackopts.model.DirRpo;
|
||||
import io.gitlab.jfronny.respackopts.model.FileRpo;
|
||||
import io.gitlab.jfronny.respackopts.model.condition.Condition;
|
||||
import io.gitlab.jfronny.respackopts.model.tree.ConfigBooleanEntry;
|
||||
import io.gitlab.jfronny.respackopts.model.tree.ConfigBranch;
|
||||
@ -23,8 +21,6 @@ public class TemplateTree {
|
||||
.registerTypeAdapter(ConfigBooleanEntry.class, new BooleanEntrySerializer())
|
||||
.registerTypeAdapter(ConfigBranch.class, new ConfigBranchSerializer())
|
||||
.registerTypeAdapter(Script.class, new ScriptDeserializer())
|
||||
.registerTypeAdapter(FileRpo.class, new FileRpoDeserializer())
|
||||
.registerTypeAdapter(DirRpo.class, new DirRpoDeserializer())
|
||||
.registerTypeAdapter(Condition.class, new ConditionDeserializer())
|
||||
.registerTypeAdapterFactory(new SingleEntrySetTypeAdapterFactory())
|
||||
.registerTypeAdapterFactory(new SingleEntryListTypeAdapterFactory())
|
||||
|
Loading…
Reference in New Issue
Block a user