package io.gitlab.jfronny.respackopts.filters.util; import io.gitlab.jfronny.commons.data.dynamic.Dynamic; import io.gitlab.jfronny.muscript.compiler.expr.StringExpr; import io.gitlab.jfronny.respackopts.Respackopts; import io.gitlab.jfronny.respackopts.RespackoptsConfig; import io.gitlab.jfronny.respackopts.util.MetaCache; import net.minecraft.resource.InputSupplier; import net.minecraft.resource.ResourcePack; import java.io.*; import java.util.Map; public class FileExpansionProvider { public static synchronized InputStream replace(Dynamic parameter, InputStream is, Map expansions) throws IOException { String s = new String(is.readAllBytes()); for (Map.Entry entry : expansions.entrySet()) { s = s.replace("${" + entry.getKey() + "}", entry.getValue().get(parameter)); } return new ByteArrayInputStream(s.getBytes()); } public static InputSupplier replace(InputSupplier inputStream, ResourcePack pack, String file) { return FileRpoSearchProvider.modifyWithRpo(file, pack, rpo -> rpo.expansions == null || rpo.expansions.isEmpty() ? inputStream : () -> { try (InputStream is = inputStream.get()) { return replace(MetaCache.getParameter(MetaCache.getKeyByPack(pack)), is, rpo.expansions); } }, inputStream); } }