More backporting
This commit is contained in:
parent
1fa988e5fd
commit
c1d6f7c061
@ -1,7 +1,8 @@
|
|||||||
package ru.dbotthepony.mc.otm.datagen
|
package ru.dbotthepony.mc.otm.datagen
|
||||||
|
|
||||||
import net.minecraft.core.RegistrySetBuilder
|
import net.minecraft.advancements.Advancement
|
||||||
import net.minecraft.core.registries.Registries
|
import net.minecraft.core.Registry
|
||||||
|
import net.minecraft.data.advancements.AdvancementProvider
|
||||||
import net.minecraft.resources.ResourceLocation
|
import net.minecraft.resources.ResourceLocation
|
||||||
import net.minecraft.world.item.DyeColor
|
import net.minecraft.world.item.DyeColor
|
||||||
import net.minecraft.world.level.block.Block
|
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.DoubleBlockHalf
|
||||||
import net.minecraft.world.level.block.state.properties.Half
|
import net.minecraft.world.level.block.state.properties.Half
|
||||||
import net.minecraftforge.client.model.generators.ModelFile
|
import net.minecraftforge.client.model.generators.ModelFile
|
||||||
import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider
|
import net.minecraftforge.common.data.ExistingFileHelper
|
||||||
import net.minecraftforge.common.data.ForgeAdvancementProvider
|
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent
|
import net.minecraftforge.eventbus.api.SubscribeEvent
|
||||||
import net.minecraftforge.fml.common.Mod
|
import net.minecraftforge.fml.common.Mod
|
||||||
import net.minecraftforge.data.event.GatherDataEvent
|
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.matter.MatterDataProvider
|
||||||
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
|
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
|
||||||
import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock
|
import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock
|
||||||
|
import java.util.function.Consumer
|
||||||
import kotlin.properties.Delegates
|
import kotlin.properties.Delegates
|
||||||
|
|
||||||
internal fun modLocation(string: String) = ResourceLocation(DataGen.MOD_ID, string)
|
internal fun modLocation(string: String) = ResourceLocation(DataGen.MOD_ID, string)
|
||||||
@ -498,12 +499,12 @@ object DataGen {
|
|||||||
this.matterData = matterData
|
this.matterData = matterData
|
||||||
|
|
||||||
val tagsProvider = TagsProvider(event)
|
val tagsProvider = TagsProvider(event)
|
||||||
val advancementProvider = object : ForgeAdvancementProvider(event.generator.packOutput, event.lookupProvider, event.existingFileHelper, listOf(
|
val advancementProvider = object : AdvancementProvider(event.generator, event.existingFileHelper) {
|
||||||
AdvancementGenerator { registries, saver, existingFileHelper ->
|
override fun registerAdvancements(consumer: Consumer<Advancement>, fileHelper: ExistingFileHelper) {
|
||||||
addAdvancements(saver, languageProvider)
|
addAdvancements(consumer, languageProvider)
|
||||||
addAndroidAdvancements(saver, languageProvider)
|
addAndroidAdvancements(consumer, languageProvider)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
)) {}
|
|
||||||
|
|
||||||
addTags(tagsProvider)
|
addTags(tagsProvider)
|
||||||
|
|
||||||
@ -521,10 +522,10 @@ object DataGen {
|
|||||||
event.generator.addProvider(event.includeServer(), matterData)
|
event.generator.addProvider(event.includeServer(), matterData)
|
||||||
|
|
||||||
val registrySetBuilder = RegistrySetBuilder()
|
val registrySetBuilder = RegistrySetBuilder()
|
||||||
.add(Registries.CONFIGURED_FEATURE, ::registerConfiguredFeatures)
|
.add(Registry.CONFIGURED_FEATURE_REGISTRY, ::registerConfiguredFeatures)
|
||||||
.add(Registries.PLACED_FEATURE, ::registerPlacedFeatures)
|
.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)
|
AddEnglishLanguage(languageProvider)
|
||||||
AddRussianLanguage(languageProvider)
|
AddRussianLanguage(languageProvider)
|
||||||
@ -534,7 +535,7 @@ object DataGen {
|
|||||||
|
|
||||||
trapdoor(MBlocks.TRITANIUM_TRAPDOOR[null]!!, modLocation("block/decorative/tritanium_trapdoor"))
|
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()}"))
|
trapdoor(MBlocks.TRITANIUM_TRAPDOOR[color]!!, modLocation("block/decorative/tritanium_trapdoor_${color.name.lowercase()}"))
|
||||||
|
|
||||||
addBlockModels(blockModelProvider)
|
addBlockModels(blockModelProvider)
|
||||||
|
@ -51,7 +51,7 @@ fun PlainLootAppender(
|
|||||||
vararg items: Pair<ItemStack, Double>
|
vararg items: Pair<ItemStack, Double>
|
||||||
) = PlainLootAppender(conditions, Arrays.stream(items))
|
) = 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>()
|
private val lambdas = ArrayList<(LootModifiers) -> Unit>()
|
||||||
|
|
||||||
fun lambda(lambda: (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)
|
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>>()
|
private val providersTable = Reference2ObjectArrayMap<LootContextParamSet, HashMap<ResourceLocation, () -> LootTable.Builder>>()
|
||||||
|
|
||||||
fun builder(context: LootContextParamSet, id: ResourceLocation, provider: LootTable.Builder.() -> Unit) {
|
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 ru.dbotthepony.mc.otm.datagen.modLocation
|
||||||
import java.util.LinkedList
|
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>()
|
private val callbacks = LinkedList<(MatteryBlockModelProvider) -> Unit>()
|
||||||
|
|
||||||
fun exec(callback: (MatteryBlockModelProvider) -> Unit) {
|
fun exec(callback: (MatteryBlockModelProvider) -> Unit) {
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package ru.dbotthepony.mc.otm.datagen.tags
|
package ru.dbotthepony.mc.otm.datagen.tags
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectArraySet
|
import it.unimi.dsi.fastutil.objects.ObjectArraySet
|
||||||
import net.minecraft.core.HolderLookup
|
|
||||||
import net.minecraft.core.Registry
|
import net.minecraft.core.Registry
|
||||||
import net.minecraft.resources.ResourceKey
|
import net.minecraft.resources.ResourceKey
|
||||||
import net.minecraft.resources.ResourceLocation
|
import net.minecraft.resources.ResourceLocation
|
||||||
@ -14,23 +13,13 @@ import net.minecraft.world.item.Tiers
|
|||||||
import net.minecraft.world.level.block.Block
|
import net.minecraft.world.level.block.Block
|
||||||
import net.minecraftforge.common.Tags
|
import net.minecraftforge.common.Tags
|
||||||
import net.minecraftforge.data.event.GatherDataEvent
|
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.capability.MatteryPlayerCapability
|
||||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
import net.minecraft.data.tags.TagsProvider as MinecraftTagsProvider
|
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) {
|
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) {
|
inner class Delegate<T : Any>(key: Registry<T>) : 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))
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (isRegistered)
|
if (isRegistered)
|
||||||
event.generator.addProvider(event.includeServer(), this)
|
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>>>()
|
private val tagInTag = HashMap<TagKey<T>, ObjectArraySet<TagKey<T>>>()
|
||||||
|
|
||||||
inner class Appender(val tag: 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 {
|
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() } }
|
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() } }
|
private val tagsInTags by lazy { tagInTag.computeIfAbsent(tag) { ObjectArraySet() } }
|
||||||
|
|
||||||
fun add(value: ResourceLocation): Appender {
|
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
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun add(value: ResourceKey<T>): Appender {
|
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" }
|
// check(rigidLocations.add(value)) { "Tag ${tag.location} of registry ${registryKey.location()} already contains $value" }
|
||||||
// return this
|
// return this
|
||||||
return add(value.location())
|
return add(value.location())
|
||||||
}
|
}
|
||||||
|
|
||||||
fun add(value: TagKey<T>): Appender {
|
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()})" }
|
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 ${registryKey.location()} already contains $value" }
|
check(tagsInTags.add(value)) { "Tag ${tag.location} of registry ${registry.key().location()} already contains $value" }
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun add(value: T): Appender {
|
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 {
|
fun add(values: Collection<T>): Appender {
|
||||||
@ -163,9 +152,9 @@ class TagsProvider(private val event: GatherDataEvent) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val blocks = Delegate(ForgeRegistries.BLOCKS)
|
val blocks = Delegate(Registry.BLOCK)
|
||||||
val items = Delegate(ForgeRegistries.ITEMS)
|
val items = Delegate(Registry.ITEM)
|
||||||
val mobEffects = Delegate(ForgeRegistries.MOB_EFFECTS)
|
val mobEffects = Delegate(Registry.MOB_EFFECT)
|
||||||
|
|
||||||
val androidImmuneEffects = mobEffects.Appender(MatteryPlayerCapability.ANDROID_IMMUNE_EFFECTS)
|
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 itemOreRatesSingular = items.Appender(Tags.Items.ORE_RATES_SINGULAR)
|
||||||
// val itemOreRatesDense = items.forge("ore_rates/dense")
|
// 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)
|
val vibrations = gameEvents.Appender(GameEventTags.VIBRATIONS)
|
||||||
|
|
||||||
fun requiresPickaxe(block: Block, tier: Tier? = null): TagsProvider {
|
fun requiresPickaxe(block: Block, tier: Tier? = null): TagsProvider {
|
||||||
|
Loading…
Reference in New Issue
Block a user