diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/datagen/RuntimeDatagen.java b/forge/src/main/java/org/embeddedt/modernfix/forge/datagen/RuntimeDatagen.java index c396c68a..47246753 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/datagen/RuntimeDatagen.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/datagen/RuntimeDatagen.java @@ -1,8 +1,11 @@ package org.embeddedt.modernfix.forge.datagen; +import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.TitleScreen; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.registries.VanillaRegistries; import net.minecraft.network.chat.Component; import net.minecraft.server.packs.PackResources; import net.minecraft.server.packs.PackType; @@ -21,6 +24,7 @@ import org.embeddedt.modernfix.ModernFix; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @Mod.EventBusSubscriber(value = Dist.CLIENT) @@ -50,8 +54,9 @@ public class RuntimeDatagen { Set existingMods = new HashSet<>(Arrays.stream(EXISTING_MODS_LIST.split(",")).collect(Collectors.toSet())); Set existingPacks = new HashSet<>(Arrays.stream(RESOURCES_IN_DIR.split(",")).map(Paths::get).collect(Collectors.toSet())); Path path = Paths.get(RESOURCES_OUT_DIR); + CompletableFuture lookupProvider = CompletableFuture.supplyAsync(VanillaRegistries::createLookup, Util.backgroundExecutor()); GatherDataEvent.DataGeneratorConfig dataGeneratorConfig = new GatherDataEvent.DataGeneratorConfig(mods, path, Collections.emptyList(), - true, true, true, true, true, mods.isEmpty() || IS_FLAT); + lookupProvider, true, true, true, true, true, mods.isEmpty() || IS_FLAT); if (!mods.contains("forge")) { //If we aren't generating data for forge, automatically add forge as an existing so mods can access forge's data existingMods.add("forge"); @@ -60,7 +65,7 @@ public class RuntimeDatagen { /* Inject the client pack resources from us */ MultiPackResourceManager manager = ObfuscationReflectionHelper.getPrivateValue(ExistingFileHelper.class, existingFileHelper, "clientResources"); List oldPacks = new ArrayList<>(manager.listPacks().collect(Collectors.toList())); - oldPacks.add(Minecraft.getInstance().getClientPackSource().getVanillaPack()); + oldPacks.add(Minecraft.getInstance().getVanillaPackResources()); ObfuscationReflectionHelper.setPrivateValue(ExistingFileHelper.class, existingFileHelper, new MultiPackResourceManager(PackType.CLIENT_RESOURCES, oldPacks), "clientResources"); ModLoader.get().runEventGenerator(mc->new GatherDataEvent(mc, dataGeneratorConfig.makeGenerator(p->dataGeneratorConfig.isFlat() ? p : p.resolve(mc.getModId()), dataGeneratorConfig.getMods().contains(mc.getModId())), dataGeneratorConfig, existingFileHelper)); dataGeneratorConfig.runAll();