Advancements test
This commit is contained in:
parent
9c41d740b2
commit
aa23c66fc8
@ -28,6 +28,8 @@ import ru.dbotthepony.mc.otm.datagen.models.MatteryBlockModelProvider
|
|||||||
import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipeProvider
|
import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipeProvider
|
||||||
import ru.dbotthepony.mc.otm.registry.*
|
import ru.dbotthepony.mc.otm.registry.*
|
||||||
import ru.dbotthepony.mc.otm.core.registryName
|
import ru.dbotthepony.mc.otm.core.registryName
|
||||||
|
import ru.dbotthepony.mc.otm.datagen.advancements.AdvancementProvider
|
||||||
|
import ru.dbotthepony.mc.otm.datagen.advancements.addAdvancements
|
||||||
import ru.dbotthepony.mc.otm.datagen.blocks.addBlockStates
|
import ru.dbotthepony.mc.otm.datagen.blocks.addBlockStates
|
||||||
import ru.dbotthepony.mc.otm.datagen.blocks.addComplexBlockStates
|
import ru.dbotthepony.mc.otm.datagen.blocks.addComplexBlockStates
|
||||||
import ru.dbotthepony.mc.otm.datagen.items.addItemModels
|
import ru.dbotthepony.mc.otm.datagen.items.addItemModels
|
||||||
@ -308,6 +310,7 @@ object DataGen {
|
|||||||
this.languageProvider = languageProvider
|
this.languageProvider = languageProvider
|
||||||
|
|
||||||
val tagsProvider = TagsProvider(event)
|
val tagsProvider = TagsProvider(event)
|
||||||
|
val advancementProvider = AdvancementProvider(event)
|
||||||
|
|
||||||
addTags(tagsProvider)
|
addTags(tagsProvider)
|
||||||
|
|
||||||
@ -321,6 +324,7 @@ object DataGen {
|
|||||||
event.generator.addProvider(true, lootModifier)
|
event.generator.addProvider(true, lootModifier)
|
||||||
event.generator.addProvider(true, SoundDataProvider(event))
|
event.generator.addProvider(true, SoundDataProvider(event))
|
||||||
event.generator.addProvider(true, AndroidResearchDataProvider(event.generator).also { it.exec { addResearchData(it, languageProvider) } })
|
event.generator.addProvider(true, AndroidResearchDataProvider(event.generator).also { it.exec { addResearchData(it, languageProvider) } })
|
||||||
|
event.generator.addProvider(true, advancementProvider)
|
||||||
|
|
||||||
AddEnglishLanguage(languageProvider)
|
AddEnglishLanguage(languageProvider)
|
||||||
|
|
||||||
@ -342,6 +346,10 @@ object DataGen {
|
|||||||
addOreSmeltingRecipes(consumer)
|
addOreSmeltingRecipes(consumer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
advancementProvider.exec { it, files ->
|
||||||
|
addAdvancements(it, files, languageProvider)
|
||||||
|
}
|
||||||
|
|
||||||
addPlatePressRecipes(recipeProvider)
|
addPlatePressRecipes(recipeProvider)
|
||||||
|
|
||||||
lootModifier.lambda {
|
lootModifier.lambda {
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.datagen.advancements
|
||||||
|
|
||||||
|
import net.minecraft.advancements.Advancement
|
||||||
|
import net.minecraft.advancements.RequirementsStrategy
|
||||||
|
import net.minecraft.advancements.critereon.InventoryChangeTrigger
|
||||||
|
import net.minecraft.world.item.ItemStack
|
||||||
|
import net.minecraftforge.common.data.ExistingFileHelper
|
||||||
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
|
import ru.dbotthepony.mc.otm.datagen.lang.MatteryLanguageProvider
|
||||||
|
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||||
|
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||||
|
import ru.dbotthepony.mc.otm.registry.MItems
|
||||||
|
import java.util.function.Consumer
|
||||||
|
|
||||||
|
fun addAdvancements(serializer: Consumer<Advancement>, existingFileHelper: ExistingFileHelper, lang: MatteryLanguageProvider) {
|
||||||
|
val translation = lang.english.Prepended("otm.advancements.regular")
|
||||||
|
|
||||||
|
val root = AdvancementBuilder()
|
||||||
|
.requirements(RequirementsStrategy.OR)
|
||||||
|
.display(
|
||||||
|
itemStack = ItemStack(MItems.TRITANIUM_INGOT),
|
||||||
|
title = TranslatableComponent(translation.add("root", "Overdrive That Matters")),
|
||||||
|
description = TranslatableComponent(translation.add("root.desc", "Its all about things that matter")),
|
||||||
|
showToast = false,
|
||||||
|
announceChat = false,
|
||||||
|
background = modLocation("textures/block/decorative/tritanium_block_gray.png")
|
||||||
|
)
|
||||||
|
.addCriterion("has_tritanium_ore", criterion(MItemTags.TRITANIUM_ORES))
|
||||||
|
.addCriterion("has_tritanium_ore_clump", criterion(MItemTags.TRITANIUM_ORE_CLUMPS))
|
||||||
|
.addCriterion("has_tritanium_ingot", InventoryChangeTrigger.TriggerInstance.hasItems(MItems.TRITANIUM_INGOT))
|
||||||
|
.save(serializer, modLocation("regular/root"), existingFileHelper)
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.datagen.advancements
|
||||||
|
|
||||||
|
import net.minecraft.advancements.Advancement
|
||||||
|
import net.minecraftforge.common.data.ExistingFileHelper
|
||||||
|
import net.minecraftforge.data.event.GatherDataEvent
|
||||||
|
import java.util.LinkedList
|
||||||
|
import java.util.function.Consumer
|
||||||
|
|
||||||
|
class AdvancementProvider(event: GatherDataEvent) : net.minecraft.data.advancements.AdvancementProvider(event.generator, event.existingFileHelper) {
|
||||||
|
private val callbacks = LinkedList<(Consumer<Advancement>, ExistingFileHelper) -> Unit>()
|
||||||
|
|
||||||
|
fun exec(callback: (Consumer<Advancement>, ExistingFileHelper) -> Unit) {
|
||||||
|
callbacks.add(callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun exec(callback: (Consumer<Advancement>) -> Unit) {
|
||||||
|
callbacks.add { it, _ ->
|
||||||
|
callback.invoke(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun registerAdvancements(consumer: Consumer<Advancement>, fileHelper: ExistingFileHelper) {
|
||||||
|
for (callback in callbacks) {
|
||||||
|
callback.invoke(consumer, fileHelper)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.datagen.advancements
|
||||||
|
|
||||||
|
import net.minecraft.advancements.Advancement
|
||||||
|
import net.minecraft.advancements.CriterionTriggerInstance
|
||||||
|
import net.minecraft.advancements.DisplayInfo
|
||||||
|
import net.minecraft.advancements.FrameType
|
||||||
|
import net.minecraft.advancements.critereon.InventoryChangeTrigger
|
||||||
|
import net.minecraft.advancements.critereon.ItemPredicate
|
||||||
|
import net.minecraft.network.chat.Component
|
||||||
|
import net.minecraft.resources.ResourceLocation
|
||||||
|
import net.minecraft.tags.TagKey
|
||||||
|
import net.minecraft.world.item.Item
|
||||||
|
import net.minecraft.world.item.ItemStack
|
||||||
|
import ru.dbotthepony.mc.otm.core.TextComponent
|
||||||
|
|
||||||
|
fun AdvancementBuilder(): Advancement.Builder = Advancement.Builder.advancement()
|
||||||
|
|
||||||
|
fun DisplayInfo(
|
||||||
|
itemStack: ItemStack,
|
||||||
|
title: Component = TextComponent("undefined"),
|
||||||
|
description: Component = TextComponent("undefined"),
|
||||||
|
background: ResourceLocation? = null,
|
||||||
|
frameType: FrameType = FrameType.TASK,
|
||||||
|
showToast: Boolean = true,
|
||||||
|
announceChat: Boolean = true,
|
||||||
|
hidden: Boolean = false,
|
||||||
|
): DisplayInfo {
|
||||||
|
return DisplayInfo(
|
||||||
|
itemStack,
|
||||||
|
title,
|
||||||
|
description,
|
||||||
|
background,
|
||||||
|
frameType,
|
||||||
|
showToast,
|
||||||
|
announceChat,
|
||||||
|
hidden
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// compiler thinks it is shadowed - it is not
|
||||||
|
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
|
||||||
|
fun Advancement.Builder.display(
|
||||||
|
itemStack: ItemStack,
|
||||||
|
title: Component = TextComponent("undefined"),
|
||||||
|
description: Component = TextComponent("undefined"),
|
||||||
|
background: ResourceLocation? = null,
|
||||||
|
frameType: FrameType = FrameType.TASK,
|
||||||
|
showToast: Boolean = true,
|
||||||
|
announceChat: Boolean = true,
|
||||||
|
hidden: Boolean = false,
|
||||||
|
) = display(itemStack, title, description, background, frameType, showToast, announceChat, hidden)
|
||||||
|
|
||||||
|
fun predicate(tag: TagKey<Item>): ItemPredicate {
|
||||||
|
return ItemPredicate.Builder.item().of(tag).build()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun criterion(tag: TagKey<Item>): CriterionTriggerInstance {
|
||||||
|
return InventoryChangeTrigger.TriggerInstance.hasItems(predicate(tag))
|
||||||
|
}
|
@ -47,6 +47,7 @@ class MatteryLanguageProvider(private val gen: DataGenerator) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
inner class Builder(language: String) {
|
inner class Builder(language: String) {
|
||||||
val slave: LanguageProvider by lazy { slaves.computeIfAbsent(language, ::Slave) }
|
val slave: LanguageProvider by lazy { slaves.computeIfAbsent(language, ::Slave) }
|
||||||
|
|
||||||
@ -75,6 +76,17 @@ class MatteryLanguageProvider(private val gen: DataGenerator) {
|
|||||||
fun gui(key: String, value: String) = slave.add("otm.gui.$key", value)
|
fun gui(key: String, value: String) = slave.add("otm.gui.$key", value)
|
||||||
fun sound(key: String, value: String) = slave.add("otm.sound.$key", value)
|
fun sound(key: String, value: String) = slave.add("otm.sound.$key", value)
|
||||||
fun sound(key: SoundEvent, value: String) = slave.add("otm.sound.${key.location.path}", value)
|
fun sound(key: SoundEvent, value: String) = slave.add("otm.sound.${key.location.path}", value)
|
||||||
|
|
||||||
|
inner class Prepended(path: String) {
|
||||||
|
val path = "$path."
|
||||||
|
constructor(vararg path: String) : this(path.joinToString("."))
|
||||||
|
constructor(path: Collection<String>) : this(path.joinToString("."))
|
||||||
|
|
||||||
|
fun add(key: String, value: String): String {
|
||||||
|
slave.add(path + key, value)
|
||||||
|
return path + key
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class Colors(
|
inner class Colors(
|
||||||
|
Loading…
Reference in New Issue
Block a user