package net.minecraft.data; import java.nio.file.Path; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; public class PackOutput { private final Path outputFolder; public PackOutput(Path p_252039_) { this.outputFolder = p_252039_; } public Path getOutputFolder() { return this.outputFolder; } public Path getOutputFolder(PackOutput.Target p_251669_) { return this.getOutputFolder().resolve(p_251669_.directory); } public PackOutput.PathProvider createPathProvider(PackOutput.Target p_249479_, String p_251050_) { return new PackOutput.PathProvider(this, p_249479_, p_251050_); } public PackOutput.PathProvider createRegistryElementsPathProvider(ResourceKey> p_344086_) { return this.createPathProvider(PackOutput.Target.DATA_PACK, Registries.elementsDirPath(p_344086_)); } public PackOutput.PathProvider createRegistryTagsPathProvider(ResourceKey> p_345128_) { return this.createPathProvider(PackOutput.Target.DATA_PACK, Registries.tagsDirPath(p_345128_)); } public static class PathProvider { private final Path root; private final String kind; PathProvider(PackOutput p_249025_, PackOutput.Target p_251200_, String p_251982_) { this.root = p_249025_.getOutputFolder(p_251200_); this.kind = p_251982_; } public Path file(ResourceLocation p_250940_, String p_251208_) { return this.root.resolve(p_250940_.getNamespace()).resolve(this.kind).resolve(p_250940_.getPath() + "." + p_251208_); } public Path json(ResourceLocation p_251634_) { return this.root.resolve(p_251634_.getNamespace()).resolve(this.kind).resolve(p_251634_.getPath() + ".json"); } public Path json(ResourceKey p_376925_) { return this.root.resolve(p_376925_.location().getNamespace()).resolve(this.kind).resolve(p_376925_.location().getPath() + ".json"); } } public static enum Target { DATA_PACK("data"), RESOURCE_PACK("assets"), REPORTS("reports"); final String directory; private Target(final String p_251326_) { this.directory = p_251326_; } } }