From c1d6f7c061e762ce10197ac3fc2ed9f29d57978f Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Tue, 2 Jan 2024 01:09:49 +0700 Subject: [PATCH] More backporting --- .../ru/dbotthepony/mc/otm/datagen/DataGen.kt | 27 +++++++------- .../mc/otm/datagen/loot/LootModifiers.kt | 2 +- .../mc/otm/datagen/loot/LootTables.kt | 2 +- .../datagen/models/MatteryModelProvider.kt | 2 +- .../mc/otm/datagen/tags/TagsProvider.kt | 35 +++++++------------ 5 files changed, 29 insertions(+), 39 deletions(-) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt index 04d2f80eb..49e087b3f 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -1,7 +1,8 @@ package ru.dbotthepony.mc.otm.datagen -import net.minecraft.core.RegistrySetBuilder -import net.minecraft.core.registries.Registries +import net.minecraft.advancements.Advancement +import net.minecraft.core.Registry +import net.minecraft.data.advancements.AdvancementProvider import net.minecraft.resources.ResourceLocation import net.minecraft.world.item.DyeColor import net.minecraft.world.level.block.Block @@ -15,8 +16,7 @@ import net.minecraft.world.level.block.state.properties.DoorHingeSide import net.minecraft.world.level.block.state.properties.DoubleBlockHalf import net.minecraft.world.level.block.state.properties.Half import net.minecraftforge.client.model.generators.ModelFile -import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider -import net.minecraftforge.common.data.ForgeAdvancementProvider +import net.minecraftforge.common.data.ExistingFileHelper import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.fml.common.Mod import net.minecraftforge.data.event.GatherDataEvent @@ -50,6 +50,7 @@ import ru.dbotthepony.mc.otm.datagen.tags.addTags import ru.dbotthepony.mc.otm.matter.MatterDataProvider import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock +import java.util.function.Consumer import kotlin.properties.Delegates internal fun modLocation(string: String) = ResourceLocation(DataGen.MOD_ID, string) @@ -498,12 +499,12 @@ object DataGen { this.matterData = matterData val tagsProvider = TagsProvider(event) - val advancementProvider = object : ForgeAdvancementProvider(event.generator.packOutput, event.lookupProvider, event.existingFileHelper, listOf( - AdvancementGenerator { registries, saver, existingFileHelper -> - addAdvancements(saver, languageProvider) - addAndroidAdvancements(saver, languageProvider) + val advancementProvider = object : AdvancementProvider(event.generator, event.existingFileHelper) { + override fun registerAdvancements(consumer: Consumer, fileHelper: ExistingFileHelper) { + addAdvancements(consumer, languageProvider) + addAndroidAdvancements(consumer, languageProvider) } - )) {} + } addTags(tagsProvider) @@ -521,10 +522,10 @@ object DataGen { event.generator.addProvider(event.includeServer(), matterData) val registrySetBuilder = RegistrySetBuilder() - .add(Registries.CONFIGURED_FEATURE, ::registerConfiguredFeatures) - .add(Registries.PLACED_FEATURE, ::registerPlacedFeatures) + .add(Registry.CONFIGURED_FEATURE_REGISTRY, ::registerConfiguredFeatures) + .add(Registry.PLACED_FEATURE_REGISTRY, ::registerPlacedFeatures) - event.generator.addProvider(event.includeServer(), DatapackBuiltinEntriesProvider(event.generator.packOutput, event.lookupProvider, registrySetBuilder, setOf(MOD_ID))) + event.generator.addProvider(event.includeServer(), DatapackBuiltinEntriesProvider(event.generator, registrySetBuilder, setOf(MOD_ID))) AddEnglishLanguage(languageProvider) AddRussianLanguage(languageProvider) @@ -534,7 +535,7 @@ object DataGen { trapdoor(MBlocks.TRITANIUM_TRAPDOOR[null]!!, modLocation("block/decorative/tritanium_trapdoor")) - for (color in DyeColor.entries) + for (color in DyeColor.values()) trapdoor(MBlocks.TRITANIUM_TRAPDOOR[color]!!, modLocation("block/decorative/tritanium_trapdoor_${color.name.lowercase()}")) addBlockModels(blockModelProvider) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiers.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiers.kt index af9dc0737..cc119d648 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiers.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiers.kt @@ -51,7 +51,7 @@ fun PlainLootAppender( vararg items: Pair ) = PlainLootAppender(conditions, Arrays.stream(items)) -class LootModifiers(generator: DataGenerator) : GlobalLootModifierProvider(generator.packOutput, DataGen.MOD_ID) { +class LootModifiers(generator: DataGenerator) : GlobalLootModifierProvider(generator, DataGen.MOD_ID) { private val lambdas = ArrayList<(LootModifiers) -> Unit>() fun lambda(lambda: (LootModifiers) -> Unit) { diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt index e7c9a96e5..dd30ee7be 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt @@ -36,7 +36,7 @@ fun TileNbtCopy(source: String, strategy: CopyNbtFunction.MergeStrategy = CopyNb return NbtCopy(source, "BlockEntityTag.$source", strategy) } -class LootTables(generator: DataGenerator) : LootTableProvider(generator.packOutput, setOf() /* because we don't fucking validate you fuck */, listOf() /* because we attach everything after class is constructed duh */) { +class LootTables(generator: DataGenerator) : LootTableProvider(generator) { private val providersTable = Reference2ObjectArrayMap LootTable.Builder>>() fun builder(context: LootContextParamSet, id: ResourceLocation, provider: LootTable.Builder.() -> Unit) { diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt index f2cdb8a5e..ea3731267 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt @@ -8,7 +8,7 @@ import ru.dbotthepony.mc.otm.core.registryName import ru.dbotthepony.mc.otm.datagen.modLocation import java.util.LinkedList -class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(event.generator.packOutput, DataGen.MOD_ID, event.existingFileHelper) { +class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(event.generator, DataGen.MOD_ID, event.existingFileHelper) { private val callbacks = LinkedList<(MatteryBlockModelProvider) -> Unit>() fun exec(callback: (MatteryBlockModelProvider) -> Unit) { diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt index eb4bff1d1..69c58b139 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt @@ -1,7 +1,6 @@ package ru.dbotthepony.mc.otm.datagen.tags import it.unimi.dsi.fastutil.objects.ObjectArraySet -import net.minecraft.core.HolderLookup import net.minecraft.core.Registry import net.minecraft.resources.ResourceKey import net.minecraft.resources.ResourceLocation @@ -14,23 +13,13 @@ import net.minecraft.world.item.Tiers import net.minecraft.world.level.block.Block import net.minecraftforge.common.Tags import net.minecraftforge.data.event.GatherDataEvent -import net.minecraftforge.registries.ForgeRegistries -import net.minecraftforge.registries.IForgeRegistry import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability import ru.dbotthepony.mc.otm.datagen.DataGen import java.util.stream.Stream import net.minecraft.data.tags.TagsProvider as MinecraftTagsProvider -private fun vanillaLookup(key: ResourceKey>): (T) -> ResourceLocation { - val registry by lazy { (Registry.REGISTRY.get(key.location()) ?: throw NoSuchElementException("No such registry $key")) as Registry } - return { registry.getKey(it) ?: throw NoSuchElementException("Registry $key does not contain $it") } -} - class TagsProvider(private val event: GatherDataEvent) { - inner class Delegate private constructor(key: Registry, val lookup: (T) -> ResourceLocation) : MinecraftTagsProvider(event.generator, key, DataGen.MOD_ID, event.existingFileHelper) { - constructor(registry: IForgeRegistry) : this(registry, { registry.getKey(it) ?: throw NoSuchElementException("Registry $registry does not contain $it") }) - constructor(key: ResourceKey>) : this(key, vanillaLookup(key)) - + inner class Delegate(key: Registry) : MinecraftTagsProvider(event.generator, key, DataGen.MOD_ID, event.existingFileHelper) { init { if (isRegistered) event.generator.addProvider(event.includeServer(), this) @@ -43,10 +32,10 @@ class TagsProvider(private val event: GatherDataEvent) { private val tagInTag = HashMap, ObjectArraySet>>() inner class Appender(val tag: TagKey) { - constructor(tag: ResourceLocation) : this(TagKey.create(registryKey, tag)) + constructor(tag: ResourceLocation) : this(TagKey.create(registry.key(), tag)) init { - require(tag.registry == registryKey) { "Trying to create appender for $tag inside registry $registryKey" } + require(tag.registry == registry.key()) { "Trying to create appender for $tag inside registry ${registry.key()}" } } private val locations by lazy { tags.computeIfAbsent(tag) { ObjectArraySet() } } @@ -54,25 +43,25 @@ class TagsProvider(private val event: GatherDataEvent) { private val tagsInTags by lazy { tagInTag.computeIfAbsent(tag) { ObjectArraySet() } } fun add(value: ResourceLocation): Appender { - check(locations.add(value)) { "Tag ${tag.location} of registry ${registryKey.location()} already contains $value" } + check(locations.add(value)) { "Tag ${tag.location} of registry ${registry.key().location()} already contains $value" } return this } fun add(value: ResourceKey): Appender { - require(value.registry() == registryKey.location()) { "Invalid registry in provided ResourceKey: ${value.registry()} (this tag appender is for ${registryKey.location()})" } + require(value.registry() == registry.key().location()) { "Invalid registry in provided ResourceKey: ${value.registry()} (this tag appender is for ${registry.key().location()})" } // check(rigidLocations.add(value)) { "Tag ${tag.location} of registry ${registryKey.location()} already contains $value" } // return this return add(value.location()) } fun add(value: TagKey): Appender { - require(value.registry() == registryKey) { "Invalid registry in provided ResourceKey: ${value.registry().location()} (this tag appender is for ${registryKey.location()})" } - check(tagsInTags.add(value)) { "Tag ${tag.location} of registry ${registryKey.location()} already contains $value" } + require(value.registry() == registry.key()) { "Invalid registry in provided ResourceKey: ${value.registry().location()} (this tag appender is for ${registry.key().location()})" } + check(tagsInTags.add(value)) { "Tag ${tag.location} of registry ${registry.key().location()} already contains $value" } return this } fun add(value: T): Appender { - return add(ResourceKey.create(registryKey, lookup.invoke(value))) + return add(ResourceKey.create(registry.key(), registry.getKey(value)!!)) } fun add(values: Collection): Appender { @@ -163,9 +152,9 @@ class TagsProvider(private val event: GatherDataEvent) { } } - val blocks = Delegate(ForgeRegistries.BLOCKS) - val items = Delegate(ForgeRegistries.ITEMS) - val mobEffects = Delegate(ForgeRegistries.MOB_EFFECTS) + val blocks = Delegate(Registry.BLOCK) + val items = Delegate(Registry.ITEM) + val mobEffects = Delegate(Registry.MOB_EFFECT) val androidImmuneEffects = mobEffects.Appender(MatteryPlayerCapability.ANDROID_IMMUNE_EFFECTS) @@ -267,7 +256,7 @@ class TagsProvider(private val event: GatherDataEvent) { val itemOreRatesSingular = items.Appender(Tags.Items.ORE_RATES_SINGULAR) // val itemOreRatesDense = items.forge("ore_rates/dense") - val gameEvents = Delegate(Registry.GAME_EVENT_REGISTRY) + val gameEvents = Delegate(Registry.GAME_EVENT) val vibrations = gameEvents.Appender(GameEventTags.VIBRATIONS) fun requiresPickaxe(block: Block, tier: Tier? = null): TagsProvider {