Update datagen class

This commit is contained in:
DBotThePony 2023-01-07 15:48:26 +07:00
parent bb52032364
commit ee53b85aff
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -4,15 +4,15 @@ import it.unimi.dsi.fastutil.objects.ObjectArraySet
import net.minecraft.data.CachedOutput import net.minecraft.data.CachedOutput
import net.minecraft.data.DataGenerator import net.minecraft.data.DataGenerator
import net.minecraft.data.DataProvider import net.minecraft.data.DataProvider
import net.minecraft.data.PackOutput
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import java.util.Collections import java.util.Collections
import java.util.LinkedList import java.util.LinkedList
import java.util.concurrent.CompletableFuture
import java.util.function.Consumer import java.util.function.Consumer
@Suppress("unused") @Suppress("unused")
open class AndroidResearchDataProvider(protected val dataGenerator: DataGenerator) : DataProvider { open class AndroidResearchDataProvider(protected val dataGenerator: DataGenerator, val modid: String) : DataProvider {
protected val pathProvider: DataGenerator.PathProvider = dataGenerator.createPathProvider(DataGenerator.Target.DATA_PACK, AndroidResearchManager.DIRECTORY)
protected val callbacks = LinkedList<(Consumer<AndroidResearchType>) -> Unit>() protected val callbacks = LinkedList<(Consumer<AndroidResearchType>) -> Unit>()
private val generated = LinkedList<AndroidResearchType>() private val generated = LinkedList<AndroidResearchType>()
@ -35,15 +35,18 @@ open class AndroidResearchDataProvider(protected val dataGenerator: DataGenerato
return this return this
} }
final override fun run(output: CachedOutput) { final override fun run(output: CachedOutput): CompletableFuture<*> {
AndroidResearchManager.fireRegistrationEvent() AndroidResearchManager.fireRegistrationEvent()
val set = ObjectArraySet<ResourceLocation>() val set = ObjectArraySet<ResourceLocation>()
val added = LinkedList<AndroidResearchType>() val added = LinkedList<AndroidResearchType>()
val futures = ArrayList<CompletableFuture<*>>()
val path = dataGenerator.packOutput.getOutputFolder(PackOutput.Target.DATA_PACK).resolve(modid).resolve(AndroidResearchManager.DIRECTORY)
addEverything { addEverything {
if (set.add(it.id)) { 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) AndroidResearchManager.put(it)
added.add(it) added.add(it)
} else { } else {
@ -55,6 +58,8 @@ open class AndroidResearchDataProvider(protected val dataGenerator: DataGenerato
value.validate() value.validate()
generated.add(value) generated.add(value)
} }
return CompletableFuture.allOf(*futures.toTypedArray())
} }
override fun getName(): String { override fun getName(): String {