More backporting
This commit is contained in:
parent
1fa988e5fd
commit
c1d6f7c061
@ -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)
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user