Spaces:
Build error
Build error
package net.minecraft.data; | |
import java.io.IOException; | |
import java.nio.file.Path; | |
import java.nio.file.Paths; | |
import java.util.Collection; | |
import java.util.concurrent.CompletableFuture; | |
import java.util.function.BiFunction; | |
import joptsimple.OptionParser; | |
import joptsimple.OptionSet; | |
import joptsimple.OptionSpec; | |
import net.minecraft.SharedConstants; | |
import net.minecraft.SuppressForbidden; | |
import net.minecraft.Util; | |
import net.minecraft.core.HolderLookup; | |
import net.minecraft.core.RegistrySetBuilder; | |
import net.minecraft.data.advancements.packs.VanillaAdvancementProvider; | |
import net.minecraft.data.info.BiomeParametersDumpReport; | |
import net.minecraft.data.info.BlockListReport; | |
import net.minecraft.data.info.CommandsReport; | |
import net.minecraft.data.info.DatapackStructureReport; | |
import net.minecraft.data.info.ItemListReport; | |
import net.minecraft.data.info.PacketReport; | |
import net.minecraft.data.info.RegistryDumpReport; | |
import net.minecraft.data.loot.packs.TradeRebalanceLootTableProvider; | |
import net.minecraft.data.loot.packs.VanillaLootTableProvider; | |
import net.minecraft.data.metadata.PackMetadataGenerator; | |
import net.minecraft.data.recipes.packs.VanillaRecipeProvider; | |
import net.minecraft.data.registries.RegistriesDatapackGenerator; | |
import net.minecraft.data.registries.TradeRebalanceRegistries; | |
import net.minecraft.data.registries.VanillaRegistries; | |
import net.minecraft.data.structures.NbtToSnbt; | |
import net.minecraft.data.structures.SnbtToNbt; | |
import net.minecraft.data.structures.StructureUpdater; | |
import net.minecraft.data.tags.BannerPatternTagsProvider; | |
import net.minecraft.data.tags.BiomeTagsProvider; | |
import net.minecraft.data.tags.CatVariantTagsProvider; | |
import net.minecraft.data.tags.DamageTypeTagsProvider; | |
import net.minecraft.data.tags.EntityTypeTagsProvider; | |
import net.minecraft.data.tags.FlatLevelGeneratorPresetTagsProvider; | |
import net.minecraft.data.tags.FluidTagsProvider; | |
import net.minecraft.data.tags.GameEventTagsProvider; | |
import net.minecraft.data.tags.InstrumentTagsProvider; | |
import net.minecraft.data.tags.PaintingVariantTagsProvider; | |
import net.minecraft.data.tags.PoiTypeTagsProvider; | |
import net.minecraft.data.tags.StructureTagsProvider; | |
import net.minecraft.data.tags.TagsProvider; | |
import net.minecraft.data.tags.TradeRebalanceEnchantmentTagsProvider; | |
import net.minecraft.data.tags.TradeRebalanceStructureTagsProvider; | |
import net.minecraft.data.tags.VanillaBlockTagsProvider; | |
import net.minecraft.data.tags.VanillaEnchantmentTagsProvider; | |
import net.minecraft.data.tags.VanillaItemTagsProvider; | |
import net.minecraft.data.tags.WorldPresetTagsProvider; | |
import net.minecraft.network.chat.Component; | |
import net.minecraft.obfuscate.DontObfuscate; | |
import net.minecraft.world.flag.FeatureFlagSet; | |
import net.minecraft.world.flag.FeatureFlags; | |
import net.minecraft.world.item.Item; | |
import net.minecraft.world.level.biome.Biome; | |
import net.minecraft.world.level.block.Block; | |
import net.minecraft.world.level.block.entity.BannerPattern; | |
import net.minecraft.world.level.levelgen.structure.Structure; | |
public class Main { | |
public static void main(String[] p_129669_) throws IOException { | |
SharedConstants.tryDetectVersion(); | |
OptionParser optionparser = new OptionParser(); | |
OptionSpec<Void> optionspec = optionparser.accepts("help", "Show the help menu").forHelp(); | |
OptionSpec<Void> optionspec1 = optionparser.accepts("server", "Include server generators"); | |
OptionSpec<Void> optionspec2 = optionparser.accepts("dev", "Include development tools"); | |
OptionSpec<Void> optionspec3 = optionparser.accepts("reports", "Include data reports"); | |
optionparser.accepts("validate", "Validate inputs"); | |
OptionSpec<Void> optionspec4 = optionparser.accepts("all", "Include all generators"); | |
OptionSpec<String> optionspec5 = optionparser.accepts("output", "Output folder").withRequiredArg().defaultsTo("generated"); | |
OptionSpec<String> optionspec6 = optionparser.accepts("input", "Input folder").withRequiredArg(); | |
OptionSet optionset = optionparser.parse(p_129669_); | |
if (!optionset.has(optionspec) && optionset.hasOptions()) { | |
Path path = Paths.get(optionspec5.value(optionset)); | |
boolean flag = optionset.has(optionspec4); | |
boolean flag1 = flag || optionset.has(optionspec1); | |
boolean flag2 = flag || optionset.has(optionspec2); | |
boolean flag3 = flag || optionset.has(optionspec3); | |
Collection<Path> collection = optionset.valuesOf(optionspec6).stream().map(p_129659_ -> Paths.get(p_129659_)).toList(); | |
DataGenerator datagenerator = new DataGenerator(path, SharedConstants.getCurrentVersion(), true); | |
addServerProviders(datagenerator, collection, flag1, flag2, flag3); | |
datagenerator.run(); | |
} else { | |
optionparser.printHelpOn(System.out); | |
} | |
} | |
private static <T extends DataProvider> DataProvider.Factory<T> bindRegistries( | |
BiFunction<PackOutput, CompletableFuture<HolderLookup.Provider>, T> p_256618_, CompletableFuture<HolderLookup.Provider> p_256515_ | |
) { | |
return p_255476_ -> p_256618_.apply(p_255476_, p_256515_); | |
} | |
public static void addServerProviders(DataGenerator p_378724_, Collection<Path> p_375786_, boolean p_376625_, boolean p_377749_, boolean p_378020_) { | |
DataGenerator.PackGenerator datagenerator$packgenerator = p_378724_.getVanillaPack(p_376625_); | |
datagenerator$packgenerator.addProvider(p_253388_ -> new SnbtToNbt(p_253388_, p_375786_).addFilter(new StructureUpdater())); | |
CompletableFuture<HolderLookup.Provider> completablefuture1 = CompletableFuture.supplyAsync(VanillaRegistries::createLookup, Util.backgroundExecutor()); | |
DataGenerator.PackGenerator datagenerator$packgenerator1 = p_378724_.getVanillaPack(p_376625_); | |
datagenerator$packgenerator1.addProvider(bindRegistries(RegistriesDatapackGenerator::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(VanillaAdvancementProvider::create, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(VanillaLootTableProvider::create, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(VanillaRecipeProvider.Runner::new, completablefuture1)); | |
TagsProvider<Block> tagsprovider = datagenerator$packgenerator1.addProvider(bindRegistries(VanillaBlockTagsProvider::new, completablefuture1)); | |
TagsProvider<Item> tagsprovider1 = datagenerator$packgenerator1.addProvider( | |
p_274753_ -> new VanillaItemTagsProvider(p_274753_, completablefuture1, tagsprovider.contentsGetter()) | |
); | |
TagsProvider<Biome> tagsprovider2 = datagenerator$packgenerator1.addProvider(bindRegistries(BiomeTagsProvider::new, completablefuture1)); | |
TagsProvider<BannerPattern> tagsprovider3 = datagenerator$packgenerator1.addProvider(bindRegistries(BannerPatternTagsProvider::new, completablefuture1)); | |
TagsProvider<Structure> tagsprovider4 = datagenerator$packgenerator1.addProvider(bindRegistries(StructureTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(CatVariantTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(DamageTypeTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(EntityTypeTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(FlatLevelGeneratorPresetTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(FluidTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(GameEventTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(InstrumentTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(PaintingVariantTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(PoiTypeTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(WorldPresetTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(VanillaEnchantmentTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1 = p_378724_.getVanillaPack(p_377749_); | |
datagenerator$packgenerator1.addProvider(p_253386_ -> new NbtToSnbt(p_253386_, p_375786_)); | |
datagenerator$packgenerator1 = p_378724_.getVanillaPack(p_378020_); | |
datagenerator$packgenerator1.addProvider(bindRegistries(BiomeParametersDumpReport::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(ItemListReport::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(BlockListReport::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(bindRegistries(CommandsReport::new, completablefuture1)); | |
datagenerator$packgenerator1.addProvider(RegistryDumpReport::new); | |
datagenerator$packgenerator1.addProvider(PacketReport::new); | |
datagenerator$packgenerator1.addProvider(DatapackStructureReport::new); | |
CompletableFuture<RegistrySetBuilder.PatchedRegistries> completablefuture2 = TradeRebalanceRegistries.createLookup(completablefuture1); | |
CompletableFuture<HolderLookup.Provider> completablefuture = completablefuture2.thenApply(RegistrySetBuilder.PatchedRegistries::patches); | |
DataGenerator.PackGenerator datagenerator$packgenerator2 = p_378724_.getBuiltinDatapack(p_376625_, "trade_rebalance"); | |
datagenerator$packgenerator2.addProvider(bindRegistries(RegistriesDatapackGenerator::new, completablefuture)); | |
datagenerator$packgenerator2.addProvider( | |
p_296336_ -> PackMetadataGenerator.forFeaturePack( | |
p_296336_, Component.translatable("dataPack.trade_rebalance.description"), FeatureFlagSet.of(FeatureFlags.TRADE_REBALANCE) | |
) | |
); | |
datagenerator$packgenerator2.addProvider(bindRegistries(TradeRebalanceLootTableProvider::create, completablefuture1)); | |
datagenerator$packgenerator2.addProvider(bindRegistries(TradeRebalanceStructureTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator2.addProvider(bindRegistries(TradeRebalanceEnchantmentTagsProvider::new, completablefuture1)); | |
datagenerator$packgenerator1 = p_378724_.getBuiltinDatapack(p_376625_, "redstone_experiments"); | |
datagenerator$packgenerator1.addProvider( | |
p_358165_ -> PackMetadataGenerator.forFeaturePack( | |
p_358165_, Component.translatable("dataPack.redstone_experiments.description"), FeatureFlagSet.of(FeatureFlags.REDSTONE_EXPERIMENTS) | |
) | |
); | |
datagenerator$packgenerator1 = p_378724_.getBuiltinDatapack(p_376625_, "minecart_improvements"); | |
datagenerator$packgenerator1.addProvider( | |
p_358177_ -> PackMetadataGenerator.forFeaturePack( | |
p_358177_, Component.translatable("dataPack.minecart_improvements.description"), FeatureFlagSet.of(FeatureFlags.MINECART_IMPROVEMENTS) | |
) | |
); | |
} | |
} |