diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchDataProvider.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchDataProvider.kt index 550c2a973..74ab0d7fa 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchDataProvider.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidResearchDataProvider.kt @@ -4,15 +4,15 @@ import it.unimi.dsi.fastutil.objects.ObjectArraySet import net.minecraft.data.CachedOutput import net.minecraft.data.DataGenerator import net.minecraft.data.DataProvider +import net.minecraft.data.PackOutput import net.minecraft.resources.ResourceLocation import java.util.Collections import java.util.LinkedList +import java.util.concurrent.CompletableFuture import java.util.function.Consumer @Suppress("unused") -open class AndroidResearchDataProvider(protected val dataGenerator: DataGenerator) : DataProvider { - protected val pathProvider: DataGenerator.PathProvider = dataGenerator.createPathProvider(DataGenerator.Target.DATA_PACK, AndroidResearchManager.DIRECTORY) - +open class AndroidResearchDataProvider(protected val dataGenerator: DataGenerator, val modid: String) : DataProvider { protected val callbacks = LinkedList<(Consumer) -> Unit>() private val generated = LinkedList() @@ -35,15 +35,18 @@ open class AndroidResearchDataProvider(protected val dataGenerator: DataGenerato return this } - final override fun run(output: CachedOutput) { + final override fun run(output: CachedOutput): CompletableFuture<*> { AndroidResearchManager.fireRegistrationEvent() val set = ObjectArraySet() val added = LinkedList() + val futures = ArrayList>() + + val path = dataGenerator.packOutput.getOutputFolder(PackOutput.Target.DATA_PACK).resolve(modid).resolve(AndroidResearchManager.DIRECTORY) addEverything { if (set.add(it.id)) { - DataProvider.saveStable(output, it.toJson(), pathProvider.json(it.id)) + futures.add(DataProvider.saveStable(output, it.toJson(), path.resolve("${it.id}.json"))) AndroidResearchManager.put(it) added.add(it) } else { @@ -55,6 +58,8 @@ open class AndroidResearchDataProvider(protected val dataGenerator: DataGenerato value.validate() generated.add(value) } + + return CompletableFuture.allOf(*futures.toTypedArray()) } override fun getName(): String {