Respackopts/src/main/java/io/gitlab/jfronny/respackopts/filters/conditions/ResourcePackFilter.java

37 lines
1.3 KiB
Java

package io.gitlab.jfronny.respackopts.filters.conditions;
import io.gitlab.jfronny.libjf.data.ResourcePath;
import io.gitlab.jfronny.libjf.data.WrappedPack;
import io.gitlab.jfronny.respackopts.Respackopts;
import io.gitlab.jfronny.respackopts.data.Rpo;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
public class ResourcePackFilter {
public static boolean fileHidden(WrappedPack pack, String name) {
if (name.endsWith(Respackopts.FILE_EXTENSION))
return false;
ResourcePath rpoPath;
try {
rpoPath = new ResourcePath(name + Respackopts.FILE_EXTENSION);
if (!pack.contains(rpoPath.getType(), rpoPath.getId()))
return false;
} catch (Throwable e) {
Respackopts.LOGGER.error("Could not check file filter status", e);
return false;
}
try (InputStream stream = pack.open(rpoPath.getType(), rpoPath.getId()); Reader w = new InputStreamReader(stream)) {
Rpo rpo = Respackopts.GSON.fromJson(w, Rpo.class);
if (rpo.conditions == null)
return false;
return !ConditionEvaluator.evaluate(rpo.conditions);
}
catch (Throwable e) {
Respackopts.LOGGER.error("Could not load RPO file " + name, e);
return false;
}
}
}