package net.minecraft.client.data; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import joptsimple.OptionParser; import joptsimple.OptionSet; import joptsimple.OptionSpec; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.SharedConstants; import net.minecraft.SuppressForbidden; import net.minecraft.client.ClientBootstrap; import net.minecraft.client.data.models.EquipmentAssetProvider; import net.minecraft.client.data.models.ModelProvider; import net.minecraft.data.DataGenerator; import net.minecraft.data.DataGenerator.PackGenerator; import net.minecraft.obfuscate.DontObfuscate; import net.minecraft.server.Bootstrap; @Environment(EnvType.CLIENT) public class Main { @DontObfuscate @SuppressForbidden( reason = "System.out needed before bootstrap" ) public static void main(String[] strings) throws IOException { SharedConstants.tryDetectVersion(); OptionParser optionParser = new OptionParser(); OptionSpec optionSpec = optionParser.accepts("help", "Show the help menu").forHelp(); OptionSpec optionSpec2 = optionParser.accepts("client", "Include client generators"); OptionSpec optionSpec3 = optionParser.accepts("all", "Include all generators"); OptionSpec optionSpec4 = optionParser.accepts("output", "Output folder").withRequiredArg().defaultsTo("generated"); OptionSet optionSet = optionParser.parse(strings); if (!optionSet.has(optionSpec) && optionSet.hasOptions()) { Path path = Paths.get(optionSpec4.value(optionSet)); boolean bl = optionSet.has(optionSpec3); boolean bl2 = bl || optionSet.has(optionSpec2); Bootstrap.bootStrap(); ClientBootstrap.bootstrap(); DataGenerator dataGenerator = new DataGenerator(path, SharedConstants.getCurrentVersion(), true); addClientProviders(dataGenerator, bl2); dataGenerator.run(); } else { optionParser.printHelpOn(System.out); } } public static void addClientProviders(DataGenerator dataGenerator, boolean toRun) { PackGenerator packGenerator = dataGenerator.getVanillaPack(toRun); packGenerator.addProvider(ModelProvider::new); packGenerator.addProvider(EquipmentAssetProvider::new); packGenerator.addProvider(AtlasProvider::new); } }