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.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<AndroidResearchType>) -> Unit>()
private val generated = LinkedList<AndroidResearchType>()
@ -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<ResourceLocation>()
val added = LinkedList<AndroidResearchType>()
val futures = ArrayList<CompletableFuture<*>>()
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 {