Main.java
net.minecraft.data.Main
信息
- 全限定名:net.minecraft.data.Main
- 类型:public class
- 包:net.minecraft.data
- 源码路径:src/main/java/net/minecraft/data/Main.java
- 起始行号:L68
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static void main(String[] args) @ L69
- 方法名:main
- 源码定位:L69
- 返回类型:void
- 修饰符:public static
参数:
- args: String[]
说明:
TODO
private static <T extends DataProvider> DataProvider.Factory<T> bindRegistries(BiFunction<PackOutput,CompletableFuture<HolderLookup.Provider>,T> target, CompletableFuture<HolderLookup.Provider> registries) @ L99
- 方法名:bindRegistries
- 源码定位:L99
- 返回类型:
DataProvider.Factory - 修饰符:private static
参数:
- target: BiFunction<PackOutput,CompletableFuture<HolderLookup.Provider>,T>
- registries: CompletableFuture<HolderLookup.Provider>
说明:
TODO
public static void addServerConverters(DataGenerator generator, Collection<Path> input, boolean server, boolean dev) @ L105
- 方法名:addServerConverters
- 源码定位:L105
- 返回类型:void
- 修饰符:public static
参数:
- generator: DataGenerator
- input: Collection
- server: boolean
- dev: boolean
说明:
TODO
public static void addServerDefinitionProviders(DataGenerator generator, boolean server, boolean reports) @ L112
- 方法名:addServerDefinitionProviders
- 源码定位:L112
- 返回类型:void
- 修饰符:public static
参数:
- generator: DataGenerator
- server: boolean
- reports: boolean
说明:
TODO
代码
public class Main {
@SuppressForbidden(reason = "System.out needed before bootstrap")
public static void main(String[] args) throws IOException {
SharedConstants.tryDetectVersion();
OptionParser parser = new OptionParser();
OptionSpec<Void> helpOption = parser.accepts("help", "Show the help menu").forHelp();
OptionSpec<Void> serverOption = parser.accepts("server", "Include server generators");
OptionSpec<Void> devOption = parser.accepts("dev", "Include development tools");
OptionSpec<Void> reportsOption = parser.accepts("reports", "Include data reports");
parser.accepts("validate", "Validate inputs");
OptionSpec<Void> allOption = parser.accepts("all", "Include all generators");
OptionSpec<String> outputOption = parser.accepts("output", "Output folder").withRequiredArg().defaultsTo("generated");
OptionSpec<String> inputOption = parser.accepts("input", "Input folder").withRequiredArg();
OptionSet optionSet = parser.parse(args);
if (!optionSet.has(helpOption) && optionSet.hasOptions()) {
Path output = Paths.get(outputOption.value(optionSet));
boolean allOptions = optionSet.has(allOption);
boolean server = allOptions || optionSet.has(serverOption);
boolean dev = allOptions || optionSet.has(devOption);
boolean reports = allOptions || optionSet.has(reportsOption);
Collection<Path> input = optionSet.valuesOf(inputOption).stream().map(x$0 -> Paths.get(x$0)).toList();
DataGenerator generator = new DataGenerator.Cached(output, SharedConstants.getCurrentVersion(), true);
addServerDefinitionProviders(generator, server, reports);
addServerConverters(generator, input, server, dev);
generator.run();
Util.shutdownExecutors();
} else {
parser.printHelpOn(System.out);
}
}
private static <T extends DataProvider> DataProvider.Factory<T> bindRegistries(
BiFunction<PackOutput, CompletableFuture<HolderLookup.Provider>, T> target, CompletableFuture<HolderLookup.Provider> registries
) {
return output -> target.apply(output, registries);
}
public static void addServerConverters(DataGenerator generator, Collection<Path> input, boolean server, boolean dev) {
DataGenerator.PackGenerator commonVanillaPack = generator.getVanillaPack(server);
commonVanillaPack.addProvider(o -> new SnbtToNbt(o, input).addFilter(new StructureUpdater()));
DataGenerator.PackGenerator devVanillaPack = generator.getVanillaPack(dev);
devVanillaPack.addProvider(o -> new NbtToSnbt(o, input));
}
public static void addServerDefinitionProviders(DataGenerator generator, boolean server, boolean reports) {
CompletableFuture<HolderLookup.Provider> vanillaRegistries = CompletableFuture.supplyAsync(VanillaRegistries::createLookup, Util.backgroundExecutor());
DataGenerator.PackGenerator serverVanillaPack = generator.getVanillaPack(server);
serverVanillaPack.addProvider(bindRegistries(RegistriesDatapackGenerator::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(VanillaAdvancementProvider::create, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(VanillaLootTableProvider::create, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(VanillaRecipeProvider.Runner::new, vanillaRegistries));
TagsProvider<Block> vanillaBlockTagsProvider = serverVanillaPack.addProvider(bindRegistries(VanillaBlockTagsProvider::new, vanillaRegistries));
TagsProvider<Item> vanillaItemTagsProvider = serverVanillaPack.addProvider(bindRegistries(VanillaItemTagsProvider::new, vanillaRegistries));
TagsProvider<Biome> vanillaBiomeTagsProvider = serverVanillaPack.addProvider(bindRegistries(BiomeTagsProvider::new, vanillaRegistries));
TagsProvider<BannerPattern> vanillaBannerPatternTagsProvider = serverVanillaPack.addProvider(
bindRegistries(BannerPatternTagsProvider::new, vanillaRegistries)
);
TagsProvider<Structure> vanillaStructureTagsProvider = serverVanillaPack.addProvider(bindRegistries(StructureTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(DamageTypeTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(DialogTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(EntityTypeTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(FlatLevelGeneratorPresetTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(FluidTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(GameEventTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(InstrumentTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(PaintingVariantTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(PoiTypeTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(WorldPresetTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(VanillaEnchantmentTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(TimelineTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(PotionTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(VillagerTradesTagsProvider::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(FeatureTagsProvider::new, vanillaRegistries));
serverVanillaPack = generator.getVanillaPack(reports);
serverVanillaPack.addProvider(bindRegistries(BiomeParametersDumpReport::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(RegistryComponentsReport::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(BlockListReport::new, vanillaRegistries));
serverVanillaPack.addProvider(bindRegistries(CommandsReport::new, vanillaRegistries));
serverVanillaPack.addProvider(RegistryDumpReport::new);
serverVanillaPack.addProvider(PacketReport::new);
serverVanillaPack.addProvider(DatapackStructureReport::new);
serverVanillaPack.addProvider(JsonRpcApiSchema::new);
CompletableFuture<RegistrySetBuilder.PatchedRegistries> tradeRebalanceRegistries = TradeRebalanceRegistries.createLookup(vanillaRegistries);
CompletableFuture<HolderLookup.Provider> patchedRegistrySet = tradeRebalanceRegistries.thenApply(RegistrySetBuilder.PatchedRegistries::patches);
DataGenerator.PackGenerator tradeRebalancePack = generator.getBuiltinDatapack(server, "trade_rebalance");
tradeRebalancePack.addProvider(bindRegistries(RegistriesDatapackGenerator::new, patchedRegistrySet));
tradeRebalancePack.addProvider(
o -> PackMetadataGenerator.forFeaturePack(
o, Component.translatable("dataPack.trade_rebalance.description"), FeatureFlagSet.of(FeatureFlags.TRADE_REBALANCE)
)
);
CompletableFuture<HolderLookup.Provider> patchedRegistries = tradeRebalanceRegistries.thenApply(RegistrySetBuilder.PatchedRegistries::full);
tradeRebalancePack.addProvider(bindRegistries(TradeRebalanceLootTableProvider::create, patchedRegistries));
tradeRebalancePack.addProvider(bindRegistries(TradeRebalanceEnchantmentTagsProvider::new, patchedRegistries));
tradeRebalancePack.addProvider(bindRegistries(TradeRebalanceTradeTagsProvider::new, patchedRegistries));
serverVanillaPack = generator.getBuiltinDatapack(server, "redstone_experiments");
serverVanillaPack.addProvider(
o -> PackMetadataGenerator.forFeaturePack(
o, Component.translatable("dataPack.redstone_experiments.description"), FeatureFlagSet.of(FeatureFlags.REDSTONE_EXPERIMENTS)
)
);
serverVanillaPack = generator.getBuiltinDatapack(server, "minecart_improvements");
serverVanillaPack.addProvider(
o -> PackMetadataGenerator.forFeaturePack(
o, Component.translatable("dataPack.minecart_improvements.description"), FeatureFlagSet.of(FeatureFlags.MINECART_IMPROVEMENTS)
)
);
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
SharedConstants.getCurrentVersion(), SharedConstants.tryDetectVersion()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/方法调用/构造调用 - 关联成员:
Cached(), DataGenerator.Cached()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
PackMetadataGenerator.forFeaturePack()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
TradeRebalanceRegistries.createLookup()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
NbtToSnbt()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
SnbtToNbt()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
StructureUpdater()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Component.translatable()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.backgroundExecutor(), Util.shutdownExecutors()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
FeatureFlagSet.of()
- 引用位置: