More backporting

This commit is contained in:
DBotThePony 2024-01-02 01:09:49 +07:00
parent 1fa988e5fd
commit c1d6f7c061
Signed by: DBot
GPG Key ID: DCC23B5715498507
5 changed files with 29 additions and 39 deletions

View File

@ -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<Advancement>, 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)

View File

@ -51,7 +51,7 @@ fun PlainLootAppender(
vararg items: Pair<ItemStack, Double>
) = 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) {

View File

@ -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<LootContextParamSet, HashMap<ResourceLocation, () -> LootTable.Builder>>()
fun builder(context: LootContextParamSet, id: ResourceLocation, provider: LootTable.Builder.() -> Unit) {

View File

@ -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) {

View File

@ -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 <T : Any> vanillaLookup(key: ResourceKey<Registry<T>>): (T) -> ResourceLocation {
val registry by lazy { (Registry.REGISTRY.get(key.location()) ?: throw NoSuchElementException("No such registry $key")) as Registry<T> }
return { registry.getKey(it) ?: throw NoSuchElementException("Registry $key does not contain $it") }
}
class TagsProvider(private val event: GatherDataEvent) {
inner class Delegate<T : Any> private constructor(key: Registry<T>, val lookup: (T) -> ResourceLocation) : MinecraftTagsProvider<T>(event.generator, key, DataGen.MOD_ID, event.existingFileHelper) {
constructor(registry: IForgeRegistry<T>) : this(registry, { registry.getKey(it) ?: throw NoSuchElementException("Registry $registry does not contain $it") })
constructor(key: ResourceKey<Registry<T>>) : this(key, vanillaLookup(key))
inner class Delegate<T : Any>(key: Registry<T>) : MinecraftTagsProvider<T>(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<TagKey<T>, ObjectArraySet<TagKey<T>>>()
inner class Appender(val tag: TagKey<T>) {
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<T>): 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<T>): 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<T>): 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 {