Respackopts/src/main/java/io/gitlab/jfronny/respackopts/filters/util/FileExpansionProvider.java

32 lines
1.2 KiB
Java

package io.gitlab.jfronny.respackopts.filters.util;
import io.gitlab.jfronny.respackopts.Respackopts;
import meteordevelopment.starscript.Script;
import net.minecraft.resource.ResourcePack;
import java.io.*;
import java.util.Map;
public class FileExpansionProvider {
public static synchronized InputStream replace(InputStream is, Map<String, Script> expansions) throws IOException {
String s = new String(is.readAllBytes());
for (Map.Entry<String, Script> entry : expansions.entrySet()) {
s = s.replace("${" + entry.getKey() + "}", Respackopts.STAR_SCRIPT.run(entry.getValue()));
}
return new ByteArrayInputStream(s.getBytes());
}
public static InputStream replace(InputStream inputStream, ResourcePack pack, String file) {
return FileRpoSearchProvider.modifyWithRpo(file, pack, rpo -> {
if (rpo.expansions == null || rpo.expansions.isEmpty())
return inputStream;
try {
return replace(inputStream, rpo.expansions);
} catch (IOException e) {
Respackopts.LOGGER.error("Could not perform file expansion on " + file, e);
return inputStream;
}
}, inputStream);
}
}