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 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-unsafe-v0:${project.jfapi_version}")
|
||||||
include("io.gitlab.jfronny.libjf:libjf-base:${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}")
|
modRuntimeOnly("io.gitlab.jfronny.libjf:libjf-devutil-v0:${project.jfapi_version}")
|
||||||
|
|
||||||
testImplementation('org.junit.jupiter:junit-jupiter:5.8.2')
|
testImplementation('org.junit.jupiter:junit-jupiter:5.8.2')
|
||||||
|
@ -5,7 +5,7 @@ loader_version=0.13.3
|
|||||||
maven_group=io.gitlab.jfronny
|
maven_group=io.gitlab.jfronny
|
||||||
archives_base_name=respackopts
|
archives_base_name=respackopts
|
||||||
fabric_version=0.47.8+1.18.2
|
fabric_version=0.47.8+1.18.2
|
||||||
jfapi_version=2.5.0
|
jfapi_version=2.7.0
|
||||||
|
|
||||||
modrinth_id=TiF5QWZY
|
modrinth_id=TiF5QWZY
|
||||||
modrinth_required_dependencies=P7dR8mSH
|
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.gson.entry.NumericEntrySerializer;
|
||||||
import io.gitlab.jfronny.respackopts.integration.FrexCompat;
|
import io.gitlab.jfronny.respackopts.integration.FrexCompat;
|
||||||
import io.gitlab.jfronny.respackopts.model.ConfigFile;
|
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.condition.Condition;
|
||||||
import io.gitlab.jfronny.respackopts.model.tree.ConfigBooleanEntry;
|
import io.gitlab.jfronny.respackopts.model.tree.ConfigBooleanEntry;
|
||||||
import io.gitlab.jfronny.respackopts.model.tree.ConfigBranch;
|
import io.gitlab.jfronny.respackopts.model.tree.ConfigBranch;
|
||||||
@ -72,8 +70,6 @@ public class Respackopts implements ClientModInitializer {
|
|||||||
.registerTypeAdapter(ConfigBooleanEntry.class, new BooleanEntrySerializer())
|
.registerTypeAdapter(ConfigBooleanEntry.class, new BooleanEntrySerializer())
|
||||||
.registerTypeAdapter(ConfigBranch.class, new ConfigBranchSerializer())
|
.registerTypeAdapter(ConfigBranch.class, new ConfigBranchSerializer())
|
||||||
.registerTypeAdapter(Script.class, new ScriptDeserializer())
|
.registerTypeAdapter(Script.class, new ScriptDeserializer())
|
||||||
.registerTypeAdapter(FileRpo.class, new FileRpoDeserializer())
|
|
||||||
.registerTypeAdapter(DirRpo.class, new DirRpoDeserializer())
|
|
||||||
.registerTypeAdapter(Condition.class, new ConditionDeserializer())
|
.registerTypeAdapter(Condition.class, new ConditionDeserializer())
|
||||||
.registerTypeAdapterFactory(new SingleEntrySetTypeAdapterFactory())
|
.registerTypeAdapterFactory(new SingleEntrySetTypeAdapterFactory())
|
||||||
.registerTypeAdapterFactory(new SingleEntryListTypeAdapterFactory())
|
.registerTypeAdapterFactory(new SingleEntryListTypeAdapterFactory())
|
||||||
|
@ -87,10 +87,10 @@ public class DirFilterEventImpl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean dirHidden(DirRpo rpo, String packId, String file) {
|
private static boolean dirHidden(DirRpo rpo, String packId, String file) {
|
||||||
if (rpo.conditions == null)
|
if (rpo.condition == null)
|
||||||
return false;
|
return false;
|
||||||
try {
|
try {
|
||||||
return !rpo.conditions.evaluate(packId);
|
return !rpo.condition.evaluate(packId);
|
||||||
} catch (RpoFormatException e) {
|
} catch (RpoFormatException e) {
|
||||||
Respackopts.LOGGER.error("Couldn't parse dir conditions for " + file + " (" + packId + ")", 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 class FileExclusionProvider {
|
||||||
public static boolean fileHidden(ResourcePack pack, String file) {
|
public static boolean fileHidden(ResourcePack pack, String file) {
|
||||||
return FileRpoSearchProvider.modifyWithRpo(file, pack, rpo -> {
|
return FileRpoSearchProvider.modifyWithRpo(file, pack, rpo -> {
|
||||||
if (rpo.conditions == null)
|
if (rpo.condition == null)
|
||||||
return false;
|
return false;
|
||||||
try {
|
try {
|
||||||
return !rpo.conditions.evaluate(MetaCache.getId(MetaCache.getKeyByPack(pack)));
|
return !rpo.condition.evaluate(MetaCache.getId(MetaCache.getKeyByPack(pack)));
|
||||||
} catch (RpoFormatException e) {
|
} catch (RpoFormatException e) {
|
||||||
Respackopts.LOGGER.error("Could not evaluate condition " + file, e);
|
Respackopts.LOGGER.error("Could not evaluate condition " + file, e);
|
||||||
return false;
|
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;
|
package io.gitlab.jfronny.respackopts.model;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
import io.gitlab.jfronny.libjf.gson.GsonHidden;
|
import io.gitlab.jfronny.libjf.gson.GsonHidden;
|
||||||
import io.gitlab.jfronny.respackopts.model.condition.Condition;
|
import io.gitlab.jfronny.respackopts.model.condition.Condition;
|
||||||
|
|
||||||
public class DirRpo {
|
public class DirRpo {
|
||||||
public Condition conditions;
|
@SerializedName(value = "condition", alternate = {"conditions"})
|
||||||
|
public Condition condition;
|
||||||
|
@SerializedName(value = "fallback", alternate = {"fallbacks"})
|
||||||
public String fallback;
|
public String fallback;
|
||||||
|
|
||||||
@GsonHidden
|
@GsonHidden
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package io.gitlab.jfronny.respackopts.model;
|
package io.gitlab.jfronny.respackopts.model;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
import io.gitlab.jfronny.libjf.gson.GsonHidden;
|
import io.gitlab.jfronny.libjf.gson.GsonHidden;
|
||||||
import io.gitlab.jfronny.respackopts.model.condition.Condition;
|
import io.gitlab.jfronny.respackopts.model.condition.Condition;
|
||||||
import meteordevelopment.starscript.Script;
|
import meteordevelopment.starscript.Script;
|
||||||
@ -8,8 +9,11 @@ import java.util.Map;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class FileRpo {
|
public class FileRpo {
|
||||||
public Condition conditions;
|
@SerializedName(value = "condition", alternate = {"conditions"})
|
||||||
|
public Condition condition;
|
||||||
|
@SerializedName(value = "fallback", alternate = {"fallbacks"})
|
||||||
public Set<String> fallbacks;
|
public Set<String> fallbacks;
|
||||||
|
@SerializedName(value = "expansion", alternate = {"expansions"})
|
||||||
public Map<String, Script> expansions;
|
public Map<String, Script> expansions;
|
||||||
|
|
||||||
@GsonHidden
|
@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.model.cache.CachedPackState;
|
||||||
import io.gitlab.jfronny.respackopts.util.MetaCache;
|
import io.gitlab.jfronny.respackopts.util.MetaCache;
|
||||||
import io.gitlab.jfronny.respackopts.model.ThrowingBiConsumer;
|
import io.gitlab.jfronny.respackopts.model.ThrowingBiConsumer;
|
||||||
import io.gitlab.jfronny.respackopts.model.tree.ConfigBranch;
|
|
||||||
import io.gitlab.jfronny.respackopts.util.RpoFormatException;
|
import io.gitlab.jfronny.respackopts.util.RpoFormatException;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.fabricmc.loader.api.ModContainer;
|
import net.fabricmc.loader.api.ModContainer;
|
||||||
import net.fabricmc.loader.api.VersionParsingException;
|
import net.fabricmc.loader.api.VersionParsingException;
|
||||||
import net.fabricmc.loader.api.metadata.version.VersionPredicate;
|
import net.fabricmc.loader.api.metadata.version.VersionPredicate;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
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.ConfigBranchSerializer;
|
||||||
import io.gitlab.jfronny.respackopts.gson.entry.EnumEntrySerializer;
|
import io.gitlab.jfronny.respackopts.gson.entry.EnumEntrySerializer;
|
||||||
import io.gitlab.jfronny.respackopts.gson.entry.NumericEntrySerializer;
|
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.condition.Condition;
|
||||||
import io.gitlab.jfronny.respackopts.model.tree.ConfigBooleanEntry;
|
import io.gitlab.jfronny.respackopts.model.tree.ConfigBooleanEntry;
|
||||||
import io.gitlab.jfronny.respackopts.model.tree.ConfigBranch;
|
import io.gitlab.jfronny.respackopts.model.tree.ConfigBranch;
|
||||||
@ -23,8 +21,6 @@ public class TemplateTree {
|
|||||||
.registerTypeAdapter(ConfigBooleanEntry.class, new BooleanEntrySerializer())
|
.registerTypeAdapter(ConfigBooleanEntry.class, new BooleanEntrySerializer())
|
||||||
.registerTypeAdapter(ConfigBranch.class, new ConfigBranchSerializer())
|
.registerTypeAdapter(ConfigBranch.class, new ConfigBranchSerializer())
|
||||||
.registerTypeAdapter(Script.class, new ScriptDeserializer())
|
.registerTypeAdapter(Script.class, new ScriptDeserializer())
|
||||||
.registerTypeAdapter(FileRpo.class, new FileRpoDeserializer())
|
|
||||||
.registerTypeAdapter(DirRpo.class, new DirRpoDeserializer())
|
|
||||||
.registerTypeAdapter(Condition.class, new ConditionDeserializer())
|
.registerTypeAdapter(Condition.class, new ConditionDeserializer())
|
||||||
.registerTypeAdapterFactory(new SingleEntrySetTypeAdapterFactory())
|
.registerTypeAdapterFactory(new SingleEntrySetTypeAdapterFactory())
|
||||||
.registerTypeAdapterFactory(new SingleEntryListTypeAdapterFactory())
|
.registerTypeAdapterFactory(new SingleEntryListTypeAdapterFactory())
|
||||||
|
Loading…
Reference in New Issue
Block a user